2010-05-03 8 views
7

Może to tylko moja nieznajomość unicode, więc proszę, popraw mnie, jeśli się mylę.JSON określa "dowolny znak UNICODE"?

Patrząc na http://json.org/, specyfikacja mówi, że ciąg może zawierać "dowolny znak UNICODE", ale to mnie myli.

  • JSON to format komunikacji prawidłowy? W jego rdzeniu wszystko musi się przetłumaczyć na bajtów.
  • W przeciwieństwie do UNICODE jest to format logiczny i musi być zakodowany do być w stanie go transmitować, prawda?

Co oni tam mieli na myśli?

Odpowiedz

16

Z 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 
+2

Zawsze jestem zakłopotany, gdy ludzie mówią "zakodowane w Unicode", ponieważ (jak rozumiem) Unicode to zestaw znaków, a nie kodowanie. Czy nie powinno to być "MUSISZ użyć zestawu znaków Unicode, z domyślnym kodowaniem UTF-8"? Jestem zaskoczony, widząc coś takiego w RFC. – ALEXintlsos

3

JSON to format serializacji, który może zawierać znaki UNICODE. Reprezentacja bajtowa tego łańcucha unicode jest zwykle wysyłana przez kabel, zwykle przez protokół HTTP, który używa nagłówków HTTP do określenia kodowania do klienta, którym jest UTF-8.

+0

Najnowsze przepisy RFC: Uwaga: Dla tej rejestracji nie zdefiniowano parametru "charset". Dodawanie tak naprawdę nie ma wpływu na zgodnych odbiorców. –

1

Jesteś prawdą, że wszystko musi przełożyć się na bajty, i że zazwyczaj występuje zwykle przez UTF (Unicode Transformation Format). JSON RFC wyjaśnia w section 3, jak określić, jakie UTF jest używane.

Powiązane problemy