我在 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>
这个“带有扫描字符 \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 响应时发生。