我刚从 Ruby 1.8.7 迁移到 Ruby 1.9.2,我一直在字符串编码问题上绊倒。我的 MySQL 数据库都是 utf8,但每次我从中查询并查找字符串编码时,我都会得到 ASCII-9BIT。
ruby-1.9.2-p180 :002 > Artist.find(1043).name.encoding
=> #<Encoding:ASCII-8BIT>
所以像 Sigur Rós 这样的艺术家会打印出“Sigur R\xC3\xB3s”。事实证明这会导致一些问题,因为我的客户端应用程序希望我的服务器返回 UTF8 json(因为一直都是这样)。一个临时的解决方法似乎是force_encoding("UTF-8")
在我的代码中添加,但感觉非常混乱,特别是因为 Ruby 1.8.7 不需要这些。
我尝试将编码魔术注释添加Encoding.default_external
到我的 env 文件中,encoding
将参数添加到我的 database.yml 文件中,但什么也没做。
我应该如何处理 Ruby 1.9.x 和字符串编码?
--
编辑:在我的其他 Rails 应用程序中(从一开始就是 Ruby 1.9.2),所有 MySQL 字符串似乎都以 UTF-8 编码。但是数据库/表编码/字符集完全相同?!