【发布时间】:2016-02-26 06:50:11
【问题描述】:
在我的rails应用程序中,当我在url参数中添加%dd或%ff时,为什么它返回invalid byte sequence in UTF-8?
如果字符串仅包含字母 + 数字 + 下划线,我有一个正则表达式 ^[a-zA-Z0-9_]+$ 来捕捉。然后当我在 url 参数中添加%dd 或%ff 时,它会返回invalid byte sequence in 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
当参数search=%d 它返回Bad Request 这没关系。但是当我添加另一个d、search=%dd 或search=a%dd 时,它会返回Action Controller: Exception caught - invalid byte sequence in UTF-8。
问题是,我怎样才能通过invalid byte sequence in UTF-8错误?
【问题讨论】:
-
en.wikipedia.org/wiki/Percent-encoding :: 也就是说,在URL中使用
%ff需要转义。 -
如何在 rails 中捕捉或拯救这些
Percent encoding? -
问题不是“如何在 rails 中转义”,而是“如何将其传递给 rails”。您可能想阅读并理解我提供的链接中写的内容。另外,请分享您尝试访问的确切 URL 和您的控制器代码,以处理这种情况。
-
我更新了我上面的问题
标签: ruby-on-rails ruby regex ruby-on-rails-4 utf-8