在 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 序列化数据。
在 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 序列化数据。