【问题标题】:invalid byte sequence utf-8 error in rails 2.3 and ruby 1.9rails 2.3 和 ruby​​ 1.9 中的无效字节序列 utf-8 错误
【发布时间】:2012-02-12 11:51:46
【问题描述】:

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

【问题讨论】:

  • 您应该提供更多信息。例如,模板的编码是什么?你能显示更长的堆栈跟踪吗?
  • @gioele 抱歉,添加了更多细节。谢谢。

标签: ruby-on-rails encoding haml ruby-1.9.2 unicode-string


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 2012-04-20
    • 1970-01-01
    • 2011-07-25
    • 2023-04-03
    • 2012-03-25
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多