Ruby on rails %dd,%ff。。。。UTF-8中的字节序列无效

Ruby on rails %dd,%ff。。。。UTF-8中的字节序列无效,ruby-on-rails,ruby,regex,ruby-on-rails-4,utf-8,Ruby On Rails,Ruby,Regex,Ruby On Rails 4,Utf 8,在我的rails应用程序中,当我在url参数中添加%dd或%ff时,为什么它返回UTF-8中的无效字节序列 如果字符串只包含字母+数字+下划线,我有一个regex^[a-zA-Z0-9\]+$。然后,当我在url参数中添加%dd或%ff时,它返回UTF-8中的无效字节序列 %dd和%ff是什么意思 更新: 我的控制器: def search regex = '^[a-zA-Z0-9_]+$' @search = params[:search] unless @search.match

在我的rails应用程序中,当我在url参数中添加
%dd
%ff
时,为什么它返回UTF-8中的
无效字节序列

如果字符串只包含字母+数字+下划线,我有一个regex
^[a-zA-Z0-9\]+$
。然后,当我在url参数中添加
%dd
%ff
时,它返回UTF-8中的
无效字节序列

%dd
%ff
是什么意思

更新:

我的控制器:

def search
  regex = '^[a-zA-Z0-9_]+$'
  @search = params[:search]
  unless @search.match(alpha_num_under_regex).nil?
   @users = User.find_by_name(@search)
   render 'api/v1/users/show', status: 200, formats: :json
else
  @users = []
  render 'api/v1/users/show', status: 422, formats: :json
end
我的网址:

localhost:3000/api/v1/users/show?search=%dd
当params
search=%d
时,它返回
Bad请求,这是正常的。但当我添加另一个
d
search=%dd
search=a%dd
时,它返回
Action Controller:Exception captured
-
UTF-8中的无效字节序列

问题是,如何传递UTF-8中的
无效字节序列
错误?

来自:

百分比编码,也称为URL编码,是在特定情况下在统一资源标识符(URI)中编码信息的机制。尽管它被称为URL编码,但事实上,它在主要的统一资源标识符(URI)集合中使用得更为普遍,该集合包括统一资源定位器(URL)和统一资源名称(URN)。因此,它还用于准备
应用程序/x-www-form-urlencoded
媒体类型的数据,这通常用于在HTTP请求中提交HTML表单数据

查询
search=%dd
根据上述处理/解释为
search=
。Ruby希望该字符串为UTF-8,但
0xDD
不是有效的UTF-8符号

为了避免此问题并传递预期内容,应该通过替换
%
URL显式地转义搜索查询⇒ <代码>%25
(后者显然是编码百分比符号本身。)

上述操作将向rails发送
%dd
查询

NB为了安全起见,应该根据上面链接的文章中指定的通用规则构建url查询:

[保留字符列表]

URI中的其他字符必须进行百分比编码。


::换句话说,在URL中使用它时需要转义
%ff
。如何在rails中捕获或解救这些
百分比编码
?问题不是“如何在rails中转义”,而是“如何将其传递给rails”。您可能希望阅读并理解我提供的链接中所写的内容。另外,请分享您试图访问的确切URL和您的控制器代码,以处理此案例。我更新了上面的问题
localhost:3000/api/v1/users/show?search=%25dd