JSON RFCのセクション 2.5には、次のように書かれています。
Basic Multilingual Plane にない拡張文字をエスケープするために、文字は、UTF-16 サロゲート ペアをエンコードする 12 文字のシーケンスとして表されます。したがって、たとえばト音記号文字 (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 値を直接使用しますか?
同様に、同じ JSON 文字列を UTF-32BE としてエンコードする場合、単純に code-point 値を直接使用できますか?
00 01 D1 1E
?