我在Rails应用程序中遇到了unicode字符的问题。问题是,当我使用包含斯堪的纳维亚字符的字符串存储对象时,使用to_json方法时,这些字符不能正确呈现。基本上,所有这些字符都是这样呈现的:
\"description\":\"\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\"下面是一个例子:
Item.create(:title => "Test title", :description => "With scandic characters öäöäö")
=> #<Item id: 198, title: "Test title", priority: nil, description: "With scandic characters öäöäö", bought_when: nil, warranty_until: nil, created_at: "2012-12-04 15:22:19", updated_at: "2012-12-04 15:22:19", user_id: nil, custom_id: nil, uuid: nil, position: 1, public: nil, secure_details: "", bookmark_id: nil, giveaway: nil, trash: false> 此时,创建的对象看起来没有问题。
Item.last返回
=> #<Item id: 198, title: "Test title", priority: nil, description: "With scandic characters \xC3\xB6\xC3\xA4\xC3\xB6\xC3\xA4\xC3\xB6", bought_when: nil, warranty_until: nil, created_at: "2012-12-04 15:22:19", updated_at: "2012-12-04 15:22:19", user_id: nil, custom_id: nil, uuid: nil, position: 1, public: nil, secure_details: "", bookmark_id: nil, giveaway: nil, trash: false> 这个"With scandic characters \xC3\xB6\xC3\xA4\xC3\xB6\xC3\xA4\xC3\xB6“-看起来还可以吗?或者我在项目创建阶段已经错过了一些适当的编码?
不管怎样,现在当调用Item.last.to_json时,我得到了这个:
"description\":\"With scandic characters \\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\\ufffd\"在这一点上,弦肯定是断了。
我缺乏一些关于Rails中正确的字符编码的知识,因此任何提示都将不胜感激。然而,该项目在浏览器中呈现时看起来很好-只有在执行JSON响应时才会发生这种情况。
发布于 2012-12-13 19:11:04
好的,问题是MySQL db不是unicode。现在,通过迁移到PosgreSQL,确保它使用unicode并使用Taps gem迁移数据,可以修复这个问题。所有这些都来自于这个铁路广播:http://railscasts.com/episodes/342-migrating-to-postgresql
https://stackoverflow.com/questions/13706378
复制相似问题