【问题标题】:Recurrent invalid byte sequence in UTF-8 with Rails使用 Rails 的 UTF-8 中重复出现的无效字节序列
【发布时间】: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


【解决方案1】:

我设法修复了它(在 Rails 3.2.18 应用程序上),如本要点所述:

https://gist.github.com/joost/ca4eda8f31655cf6095a

【讨论】:

    【解决方案2】:

    重现引起的问题

    HTTP_USER_AGENT      : Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)
    

    创建一个 ruby​​ 脚本

    #!ruby
    invalid = "data\xed\xe5\xed\xe0".force_encoding('ASCII-8BIT')
    `curl localhost:3000 -d #{invalid}`
    

    rack-utf8_sanitizer gem 添加到您的 Gemfile 中

    这已在我的开发环境中解决,但不适用于 Heroku。我相应地更新了我的问题。

    更新:

    我在 application.rb 文件中添加了 require "rack/utf8_sanitizer",这似乎解决了 Heroku 问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2012-01-12
      • 2012-04-20
      • 2014-01-09
      • 2015-07-04
      相关资源
      最近更新 更多