Ext.JSON.encode()和Chrome的JSON.stringify()的不同UTF-8处理

时间:2012-08-18 07:48:53

标签: json extjs unicode utf-8

在Chrome控制台中使用时,我发现Ext JS(版本4.1)Ext.JSON.encode()和Chrome版本(版本21.0.1180.79)JSON.stringify()之间存在差异:

JSON.stringify({"title": "ä"})
> "{"title":"ä"}"

Ext.JSON.encode({"title": "ä"})
> "{"title":"\u00e4"}"

由于我想在浏览器中显示结果,我更喜欢Chrome的结果,但我知道我不能真正依赖Chrome在其他浏览器中的JSON处理。那么如何通过Sencha的Ext JS实现Chrome的结果呢?

2 个答案:

答案 0 :(得分:5)

您可以在Extjs 4中将Ext.USE_NATIVE_JSON设置为true。

答案 1 :(得分:0)

您需要知道值是相同的。 \ u00e4 是字符ä的真实utf-8表示形式。 Chrome可能会输出ä解码,以便更好地满足用户的需求,但在解码时,两个值都相同:

JSON.stringify({"title": "ä"})
> "{"title":"ä"}"
Ext.JSON.encode({"title": "ä"})
> "{"title":"\u00e4"}"
JSON.parse('{"title":"ä"}')
> Object {title: "ä"}
Ext.JSON.decode('{"title":"\u00e4"}')
> Object {title: "ä"}
JSON.parse('{"title":"\u00e4"}')
> Object {title: "ä"}
Ext.JSON.decode('{"title":"ä"}')
> Object {title: "ä"}