Кодирование JSON в UTF -16 или UTF -32

JSON RFC, раздел 2.5 , частично говорит:

To escape an extended character that is not in the Basic Multilingual Plane, the character is represented as a twelve-character sequence, encoding the UTF-16 surrogate pair. So, for example, a string containing only the G clef character (U+1D11E) may be represented as "\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, мог бы я просто использовать значение точки кода -напрямую:

00 01 D1 1E

?

12
задан Franklin Yu 21 September 2018 в 15:36
поделиться