小编典典

JSON和转义字符

json

我有一个字符串,该字符串在Javascript中序列化为JSON,然后反序列化为Java。

看起来如果字符串包含度数符号,那么我遇到了问题。

我可以使用一些帮助找出应该归咎于谁:

  • 是Spidermonkey 1.8的实现吗?(这具有内置的JSON实现)
  • Google gson吗?
  • 是我做不正确的事吗?

这是JSDB中发生的事情:

js>s='15\u00f8C'
15°C
js>JSON.stringify(s)
"15°C"

我本来希望"15\u00f8C'这使我相信Spidermonkey的JSON实现没有做正确的事…除了JSON主页的语法说明(是否是规范?)说,可以使用char

任意Unicode字符,“-或\或控制字符除外”

所以也许它按原样传递字符串而不将其编码为\ u00f8 …在这种情况下,我认为问题出在gson库。

有人可以帮忙吗?

我想我的解决方法是使用其他JSON库,或者在调用后手动自己对字符串进行转义JSON.stringify()-但是,如果这是一个错误,那么我想提交一个错误报告。


阅读 701

收藏
2020-07-27

共1个答案

小编典典

在任何一种实现中这都不是错误。不需要转义U + 00B0。引用RFC

2.5。 弦乐

字符串的表示类似于C系列编程语言中使用的约定。字符串以引号开头和结尾。除必须转义的字符外,所有Unicode字符都可以放在引号内:引号,反斜线和控制字符(U
+ 0000至U + 001F)。

任何字符 可以转义。

转义所有内容会扩大数据的大小(在所有Unicode转换格式中,所有代码点都可以用四个或更少的字节表示;而对它们进行编码都会使它们变成六个或十二个字节)。

您更有可能在代码中的某个地方出现文本转码错误,并且转义ASCII子集中的所有内容都会掩盖此问题。JSON规范要求所有数据都使用Unicode编码。

2020-07-27