保存到数据库时,JSON中的多字节字符丢失

时间:2012-09-10 02:24:46

标签: ruby-on-rails-3 json utf-8 multibyte hstore

我使用Rails的.to_json()方法将我的哈希转换为JSON。

哈希:

{ "Größe" => "XL" }

JSON:

"{\"Gr\\u00f6\\u00dfe\":\"XL\"}"

之后,JSON字符串通过此Rails(3.2.6)SQL命令存储在名为 static 的hstore(Postgres)列中:

UPDATE ... "static" = 'options=>"{\"Gr\u00f6\u00dfe\":\"XL\"}"' WHERE ...

已经丢失了一个转义反斜杠。

在数据库本身中, static 列如下所示:

"options"=>"{\"Gru00f6u00dfe\":\"XL\"}"

u00f6 u00dfe 的所有反斜杠都消失了。

JSON.parse()不再识别多字节字符,因此返回以下哈希:

{ "Gru00f6u00dfe" => "XL" }

有谁知道如何防止这种情况?谢谢你的帮助!

0 个答案:

没有答案