JSON указывает "любой символ Юникода"? - PullRequest
7 голосов
/ 03 мая 2010

Может быть, это просто незнакомство с юникодом, поэтому, пожалуйста, поправьте меня, если я ошибаюсь.

Глядя на http://json.org/, спецификация говорит, что строка может содержать «любой символ ЮНИКОД», но это меня смущает.

  • JSON - это формат общения правильный? В основе этого, все должно сводиться к байт.
  • Напротив, UNICODE - это логический формат и должен быть закодирован в быть в состоянии передать это, верно?

Так что они там имели в виду?

Ответы [ 3 ]

16 голосов
/ 03 мая 2010

Из RFC :

3.  Encoding

   JSON text SHALL be encoded in Unicode.  The default encoding is
   UTF-8.

   Since the first two characters of a JSON text will always be ASCII
   characters [RFC0020], it is possible to determine whether an octet
   stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
   at the pattern of nulls in the first four octets.

           00 00 00 xx  UTF-32BE
           00 xx 00 xx  UTF-16BE
           xx 00 00 00  UTF-32LE
           xx 00 xx 00  UTF-16LE
           xx xx xx xx  UTF-8
3 голосов
/ 03 мая 2010

JSON - это формат сериализации, который может включать символы UNICODE. Байт-представление этой строки Unicode обычно отправляется по проводам, обычно через протокол HTTP, который использует заголовки HTTP для указания кодировки для клиента, который является UTF-8.

1 голос
/ 03 мая 2010

Вы правы, что все должно переводиться в байты, и обычно это происходит через UTF (формат преобразования Unicode). В RFC JSON в разделе 3 объясняется, как определить, какой UTF используется.

...