rails 2.3和ruby 1.9中的无效字节序列utf-8错误



我已经将我的应用程序从Rails 2.3.8/Ruby 1.8.7迁移到了2.3.14/Ruby 1.9.2——这并不容易,但基本上可以工作。我一直有一个问题是,在偶尔的Haml模板中,我会得到以下错误:

ActionView::TemplateError (invalid byte sequence in UTF-8) on line #....

这是一个编码问题,我看到了一些关于如何处理它(使用Iconv.conv)的建议,但我尝试的方法似乎不起作用。如何在应用程序级别解决此问题(不必修补每个模板)?谢谢

编辑:一些堆栈跟踪

ActionView::TemplateError (invalid byte sequence in UTF-8) on line #28 of app/views/users/_user.haml:
27:     - if user.valid?
28:       - image_onclick = remote_function( :url => { :action => :toggle_image, :id => user.id } )
    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `=~'
    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `!~'
    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `blank?'
    vendor/rails/activerecord/lib/active_record/validations.rb:478:in `block (2 levels) in validates_each'
    vendor/rails/activerecord/lib/active_record/validations.rb:476:in `each'
    vendor/rails/activerecord/lib/active_record/validations.rb:476:in `block in validates_each'
    ... etc

数据库表的CHARSET被编码在UTF-8中。我没有为我的模板分配任何特定的编码,尽管我设置了

Encoding.default_internal = 'utf-8'
Encoding.default_external = 'utf-8'

environment.rb

这似乎是我一直在使用的MySQL适配器——旧的ruby-mysqlgem的问题。我已经升级到mysql2,这似乎解决了问题。

相关内容

  • 没有找到相关文章

最新更新