在 JSON 字符串中序列化 utf-8 字符的标准方法

Standard way of Serializing utf-8 characters in a JSON String

在 JSON 中序列化 utf-8 字符串的标准方法是什么?它应该是你的转义序列还是应该是十六进制代码。

我想用 JSON 格式的单位序列化一些传感器读数。

例如,我有单位为°C 的温度读数。是否应该序列化为

{
 "units": "\u00b0"
}
´´´
or should it be something like 
´´´
{
 "units":"c2b0"
}

或者标准是否支持这两种方法。

如果使用JSON交换数据,必须使用UTF-8编码(见RFC8259)。不再允许使用 UTF-16 和 UTF-32 编码。所以没有必要转义度数字符。我强烈建议不要进行不必要的转义。

正确推荐

{
  "units": "°C"
}

当然,您必须应用正确的 UTF-8 编码。

如果在封闭的生态系统中使用 JSON,您可以使用其他文本编码(尽管我建议您不要这样做,除非您有充分的理由)。如果您需要转义非 UTF-8 编码中的度数字符,正确的转义序列是 \u00b0.

可以但不推荐

{
  "units": "\u00b0C"
}

你的第二种方法在任何情况下都是不正确的。

不正确

{
  "units":"c2b0"
}

使用类似“\xc2\xb0”的方式也是不正确的。这是 C/C++ 源代码中使用的转义。它也被调试器用来显示字符串。在JSON中总是无效的。

也不正确

{
    "units":"\xc2\xb0"
}

JSON使用unicode编码,但是规定可以使用\uxxxx转义码来表示不映射到你的计算机原生环境的字符,所以完全有效包含此类转义序列并仅使用纯 ascii 编码来传输 JSON 序列化数据。