我正在尝试使我的 Rails 应用程序 UTF-8 原生。我这样做是因为自从升级到 Ruby 1.9 后,我遇到了这个问题,每次我的网页必须显示一些 UTF-8 字符时,我得到:
incompatible character encodings: UTF-8 and ASCII-8BIT
作为错误页面。我已经诊断出当我尝试呈现任何 UTF-8 文本时会出现错误,因为这种网页会失败:
%h3.book_title
= "カタカナ"
(询问上述字符串的编码将返回 UTF-8)
然而这个会成功:
%h3.book_title
= "カタカナ".force_encoding("ASCII-8BIT")
所以看起来 Rails 决定渲染自 1.9 升级以来的所有页面,默认情况下使用 ASCII-8BIT 编码。这是一个问题,因为我的页面经常显示仅在 UTF-8 中运行良好的多语言数据。
我尝试过的事情:
我正在使用 Mysql2 gem。我把它放在我的 environment.rb 中:
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
这是在我的 application.rb 中:
config.encoding = "utf-8"
这些都不是真正的工作。谁能阐明如何使我的应用程序只使用 UTF-8 而不是这种 ASCII-8BIT 废话?