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



我发现Ext JS(版本4.1(Ext.JSON.encode()和Chrome(版本21.0.1180.79(JSON.stringify()在Chrome控制台中使用时有所不同:

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

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

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

您需要知道值是相同的。\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: "ä"}

最新更新