Kodowanie JSON w UTF-16 lub UTF-32
TheJSON RFC, sekcja 2.5, mówi po części:
Aby uciec przed rozszerzonym znakiem, którego nie ma w podstawowej wielojęzycznej płaszczyźnie, znak jest reprezentowany jako sekwencja dwunastoznakowa, kodująca zastępczą parę UTF-16. Tak więc na przykład ciąg zawierający tylko znak G klucza (U + 1D11E) może być reprezentowany jako „uD834 uDD1E”.
Załóżmy, że mam ważny powód, aby kodować JSON jako UTF-16BE (co jest dozwolone). Czy nadal jest konieczne unikanie znaków, które nie znajdują się w Basic Multilingual Plane? Np. Zamiast tego:
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
która jest 24-bajtową sekwencją bajtów UTF-16BE dla\uD834\uDD1E
, czy to legalne:
D8 34 DD 1E
tj. bezpośrednio używać 4-bajtowych wartości UTF-16BE?
Podobnie, gdybym miał zakodować ten sam ciąg JSON co UTF-32BE, czy mógłbym po prostu użyć wartości punktu kodowego bezpośrednio:
00 01 D1 1E
?