小编典典

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首页的语法描述(是规范?)说,一个字符可以

除“-或\或控制字符”以外的任何Unicode字符

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

有人可以帮忙吗?

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


阅读 253

收藏
2020-07-27

共1个答案

小编典典

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

2.5。弦乐

字符串的表示类似于C系列
编程语言中使用的约定。字符串以引号开头和结尾。

必须转义的字符外,所有Unicode字符都可以放在引号内:引号,反斜线和
控制字符(U + 0000至U + 001F)。

任何字符都可以转义。

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

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

2020-07-27