Rails 怎样处理 url 的 encoding 错误

lulalala · 2012年08月19日 · 最后由 lulalala 回复于 2014年01月15日 · 4750 次阅读

我的网站一些网址有含中文,虽然连结都有 utf-8 url encode 好了,但是还是常常会有访客用错误的编码的 url 来拜访我的网站,RAILS 会有这样子的错误:

A ArgumentError occurred in topics#index:

invalid byte sequence in UTF-8 activesupport (3.2.6) lib/active_support/core_ext/object/blank.rb:105:in `=~'

应该就是用了非 utf-8 编码后 url-encode 的结果。请问这个时候有办法自动导向首页吗?

begin
...
rescue => e
  logger.error e 
  redirect_to root_path
end

谢谢,有办法做成全域的吗? 还有能只限这这种 error 吗(还是说只能比对字串e.to_s.include?('invalid byte sequence')

中文为什么需要 url encode 呢?

其实你可以先看看这样请求的 User agent。看看是不是一些非浏览器程序搞的。如果是的话就封掉好了。

#5 楼 @mvj3 https://github.com/lulalala/utf8-cleaner 做了一个 fork,要是有问题就喷 400。原本的版本不会处理未作 utf8 string encode 的 request

需要 登录 后方可回复, 如果你还没有账号请 注册新账号