【发布时间】:2014-09-10 12:50:16
【问题描述】:
环境
- Rails 3.2.11
- Ruby 1.9.1
-
utf8-cleaner宝石
我已经为这个问题苦苦挣扎了一年多,但我无法在我的开发环境中重现它,这让我很难理解为什么会发生这种情况以及如何解决。这是我收到的错误通知(通过使用 ExceptionNotifier 的电子邮件):
A ArgumentError occurred in home#index:
invalid byte sequence in UTF-8
.bundle/gems/ruby/1.9.1/gems/rack-1.4.5/lib/rack/utils.rb:104:in `normalize_params'
显然是由中国蜘蛛引起的:
HTTP_USER_AGENT : Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)
我尝试了几件事,请参阅我的 earlier question 我试图捕捉错误的地方。
我也有安装程序utf8-cleaner gem,但这似乎无法解决,除非我错过了一步。
如何重现该问题?请注意,当我访问它时,导致问题的 URL 完全正确 (?)
更新 20140721 - 使用 rack-utf8_sanitizer
- 在
Gemfile中添加gem 'rack-utf8_sanitizer' - 在
application.rb中添加config.middleware.insert 0, Rack::UTF8Sanitizer $ bundle install
这在 DEV 上运行良好,但在我的 Heroku PRODUCTION 上失败了,出现以下问题:
$ heroku run rake middleware --a test-app
Running `rake middleware` attached to terminal... up, run.4846
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.6
rake aborted!
uninitialized constant Rack::UTF8Sanitizer
/app/config/application.rb:71:in `<class:Application>'
我仍在调查为什么我应该得到这个。
【问题讨论】:
-
不要让读者阅读不同的页面来理解您的问题。让这个问题自成一体。
标签: ruby ruby-on-rails-3 utf-8 rack