我已经将我的应用程序从 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