Encoding Rails 3-(不兼容的字符编码:UTF-8和ASCII-8BIT):
不兼容的字符编码:UTF-8和ASCII-8BIT 我发现了很多关于这个错误信息的旧信息,但很少有建议,但我想知道目前的状态是什么,因为网络上对它的讨论似乎很少。当我试图从包含重音字符(例如“é”)的区域设置文件中呈现文本时,就会出现这种情况Encoding Rails 3-(不兼容的字符编码:UTF-8和ASCII-8BIT):,encoding,utf-8,ruby-on-rails-3,Encoding,Utf 8,Ruby On Rails 3,不兼容的字符编码:UTF-8和ASCII-8BIT 我发现了很多关于这个错误信息的旧信息,但很少有建议,但我想知道目前的状态是什么,因为网络上对它的讨论似乎很少。当我试图从包含重音字符(例如“é”)的区域设置文件中呈现文本时,就会出现这种情况 我使用的是rails 3.0.3、ruby 1.9.2(并尝试了1.8.7,结果相同)、mysql2适配器、utf8编码 我记得曾经用“字符串”解决过这个问题。强制编码(“UTF-8”)当我的Ruby应用程序解析字符串的方式与数据库存储字符串的方式之间存在
我使用的是rails 3.0.3、ruby 1.9.2(并尝试了1.8.7,结果相同)、mysql2适配器、utf8编码 我记得曾经用“字符串”解决过这个问题。强制编码(“UTF-8”)当我的Ruby应用程序解析字符串的方式与数据库存储字符串的方式之间存在冲突时,我遇到了这个错误 当我处理UTF-8时,为了自己解决这个问题,我确保在有问题的.rb文件的顶部有这个:
# encoding: utf-8
或者,您可以在应用程序配置文件中使用以下命令全局设置默认UTF-8编码:
最后,通过在database.yml中设置编码
选项,确保我的数据库在内部使用UTF-8:
development:
adapter: postgresql
encoding: UTF8
database: pg_development
username: abe
pool: 5
目前,这可能是由in-Mail 2.5.4造成的,它“污染”了邮件对象的编码
@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
我不能回答Ruby的问题,但基本上没有8位ASCII这样的东西。是一种7位编码,位从未设置。“é”存在于*nix 8位编码中,如Windows编码,如Apple Macintosh编码,如。它在MacRoman中的位置与其他两个不同,需要UTF-8中的两个字节。您有导致此问题的原始电子邮件的副本吗?我遇到了类似的情况,我希望有一封好的测试邮件(原因比我想解释的更复杂,我无法得到一封失败的邮件),最终我的问题是由静态I18n文件引起的,它保存了二进制数据,这些二进制数据是由我用来管理翻译的插件web界面放在那里的。寻找像day:!i18n文件中的二进制| RMOtYQ==。
@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