1

嗨,我有一个存储一些数据的 oracle 数据库。它还包含一些非英文文本,例如“TEST”。引用不是英文引用“。问题是当我从 Rails 2.2.2 (Ruby 1.8.7) 检索它时,此数据库模型的字段值在 erg 视图中返回问号,因此“TEST”变为?TEST?。但是在 Rails 3 下,它显示正确。

erb 中显示值的代码是

User.first.description

我确实使用以下内容在 database.yml 中设置了编码,但没有帮助

编码:UTF8 排序规则:utf8_unicode_ci

可能是因为 Ruby 1.9 比 Ruby 1.8 更好地处理编码。有没有办法解决这个问题?

4

1 回答 1

0

是的,ruby 1.9 处理与 1.8 不同的编码。此外,Rails 3 通过尝试确保所有内容都使用 UTF-8 来简化编码。

您的问题很可能是该字符串是用编码的,Latin-1并且 Rails 2 尝试将其作为UTF-8编码读取。有几个在线猴子补丁,您可以为您的数据库尝试,或者您可以执行一次性脚本来重新编码数据库中的所有字段。

我建议阅读这篇文章,以进一步了解编码如何与 Ruby 一起工作:Encodings, Unabridged (by Yehuda Katz)

于 2012-10-03T15:12:34.370 回答