JSON RFC,第2.5 节,部分说明:
为了转义不在基本多语言平面中的扩展字符,该字符表示为一个十二字符序列,编码 UTF-16 代理对。因此,例如,仅包含 G 谱号字符 (U+1D11E) 的字符串可以表示为“\uD834\uDD1E”。
假设我有正当理由将 JSON 编码为 UTF-16BE(这是允许的)。这样做时,是否仍然需要对不在基本多语言平面中的字符进行转义?例如,而不是这个:
00 5C 00 75 00 44 00 38 00 33 00 34 00 5C 00 75 00 44 00 44 00 31 00 45
\ u D 8 3 4 \ u D D 1 E
这是 24 字节的 UTF-16BE 字节序列\uD834\uDD1E
,这样做是否合法:
D8 34 DD 1E
即,直接使用 4 字节的 UTF-16BE 值?
同样,如果我要编码与 UTF-32BE 相同的 JSON 字符串,我是否可以直接使用代码点值:
00 01 D1 1E
?