我有一个字符串,该字符串在Javascript中序列化为JSON,然后反序列化为Java。
看起来如果字符串包含度数符号,那么我遇到了问题。
我可以使用一些帮助找出应该归咎于谁:
是Spidermonkey 1.8的实现吗?(这具有内置的JSON实现)
这是JSDB中发生的事情:
js>s=‘15\u00f8C’ 15°C js>JSON.stringify(s) “15°C”
我本来期望”15\u00f8C’我相信这些线索,SpiderMonkey的的JSON实现没有做正确的事......除了 在JSON首页的语法描述(是规范?)说,一个字符可以
除“-或\或控制字符”以外的任何Unicode字符
因此,也许它按原样传递字符串而不将其编码为\ u00f8…在这种情况下,我认为问题出在gson库。
有人可以帮忙吗?
我想我的解决方法是使用其他JSON库,或者在调用后手动自己对字符串进行转义JSON.stringify()-但是,如果这是一个错误,那么我想提交一个错误报告。
在任何一种实现中这都不是错误。不需要转义 U + 00B0。引用RFC:
2.5。弦乐 字符串的表示类似于C系列 编程语言中使用的约定。字符串以引号开头和结尾。 除 必须转义的字符外,所有Unicode字符都可以放在引号内:引号,反斜线和 控制字符(U + 0000至U + 001F)。 任何字符都可以转义。
2.5。弦乐
字符串的表示类似于C系列 编程语言中使用的约定。字符串以引号开头和结尾。 除 必须转义的字符外,所有Unicode字符都可以放在引号内:引号,反斜线和 控制字符(U + 0000至U + 001F)。
任何字符都可以转义。
将所有内容转义会增大数据的大小(在所有Unicode转换格式中,所有代码点都可以用四个或更少的字节表示;而对它们进行编码都会使它们变成六个或十二个字节)。
您更有可能在代码中的某个地方出现文本转码错误,并且转义ASCII子集中的所有内容都会掩盖此问题。这是一个所有数据使用Unicode编码的JSON规范的要求。