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