不兼容的字符编码:UTF-8和ASCII-8BIT
我发现了很多旧的信息,但对这个错误信息的建议很少,但想知道目前的情况是什么,因为网上的讨论似乎较少。当我尝试从包含重音字符的语言环境文件中呈现文本时,例如'é',就会出现这种情况。
我正在使用rails 3.0.3,ruby 1.9.2(并且尝试了1.8.7同样的结果),mysql2适配器,utf8编码。
答案 0 :(得分:3)
当我的Ruby应用程序解析字符串以及数据库如何存储它们之间存在encoding mismatch时,我收到此错误。
为了在我处理UTF-8时为自己解决这个问题,我确保在相关的.rb文件的顶部有这个:
# encoding: utf-8
或者,您可以使用this line在应用程序配置文件中全局设置默认的UTF-8编码:
Encoding.default_internal, Encoding.default_external = ['utf-8'] * 2
最后,我通过在database.yml中设置 encoding
选项来确保我的数据库在内部使用UTF-8:
development:
adapter: postgresql
encoding: UTF8
database: pg_development
username: abe
pool: 5
答案 1 :(得分:2)
我记得使用“string”.force_encoding(“UTF-8”)
来解决这个问题。答案 2 :(得分:2)
目前,这可能是由邮件2.5.4中的issue引起的,它会“污染”邮件对象的编码。
@email = Email.find(1)
@email.body.encoding # This is a fresh instance from db, still okay
Mail.new(@email.body)
@email.body.encoding # value has been changed