我将一个使用 1.8.7 的网络应用程序移到了 1.9.2,现在我一直在使用
incompatible character encodings: ASCII-8BIT and UTF-8
我有 UTF-8 的数据库编码,我还有 'config.encoding = "utf-8"'。
我看到了一些想法作为可能的解决方法并添加了
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
但是也没用。
出现此错误的一段特定代码是
%ul.address
- @user.address.split(',').each do |line|
%li= line.titleize
我使用的是 HAML,我检查了 line.titleize,编码是 UTF-8。似乎模板是用 ASCII-8BIT 渲染的,每次我尝试渲染像 'ñ' 这样的字符时它都会搞砸
我正在使用 Rails 3.0.5。
我已阅读 James Edward Gray 的帖子,但我仍然可以弄清楚发生了什么;(。
我非常感谢任何形式的帮助 :D。
我也试过:
"string".force_encoding("UTF-8")
和
# encoding: utf-8
没有任何运气。
固定
查看评论。
最佳答案
我刚刚遇到了类似的事情......并发现隐藏在这个问题的评论中的修复,但认为值得明确强调:
cookie 是 ASCII-8BIT,但 rails 3 模板默认是 utf-8。这意味着在 View 中使用原始 cookie 值可能会引发 Encoding::CompatibilityError(如果用户在 cookie 值中有不兼容)
解决方法(如 Adolfo Builes 所述)是将您的 cookie 值强制转换为 UTF-8,如:
cookies["location"].force_encoding('UTF-8')
关于ruby-on-rails - 由于 cookie 的 8 位编码(Rails 3 和 Ruby 1.9)导致错误 'incompatible character encodings: ASCII-8BIT and UTF-8',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5398889/