Ruby on rails Rails 2数据库模型返回带问号的错误编码字符串

Ruby on rails Rails 2数据库模型返回带问号的错误编码字符串,ruby-on-rails,Ruby On Rails,嗨,我有一个存储一些数据的oracle数据库。它还包含一些非英语文本,例如“TEST”。问题是,当我从Rails 2.2.2(Ruby 1.8.7)检索它时,这个数据库模型的字段值在erg视图中返回问号,所以“TEST”变成了“TEST”。但是在Rails 3下,它显示正确 erb中显示该值的代码为 User.first.description 我确实在database.yml中设置了以下编码,但没有帮助 编码:UTF8 排序规则:utf8\U unicode\U ci 可能是因为Ruby 1

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

erb中显示该值的代码为

User.first.description
我确实在database.yml中设置了以下编码,但没有帮助

编码:UTF8 排序规则:utf8\U unicode\U ci


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

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

您的问题很可能是字符串是用
Latin-1
编码的,Rails 2尝试将其读取为
UTF-8
编码。联机有几个monkey补丁,您可以尝试对数据库进行修改,也可以执行一次性脚本对数据库中的所有字段重新编码


我建议阅读本文,进一步了解Ruby的编码工作原理:

Hi gylaz,你有我可以尝试的补丁的链接吗。我正在使用oracle数据库。@Shanison我手头没有这些补丁。大约六个月前,当我从1.8.7升级到1.9.3时,我遇到了这个问题,当时我正在使用mysql。我建议googling:)谢谢gylaz。我将升级rails和ruby版本,这将解决问题。