2010-05-03 22 views
7

Tal vez esto es solo mi falta de familiaridad con el Unicode, así que por favor corrígeme si me equivoco.JSON especifica "cualquier carácter UNICODE"?

En cuanto a http://json.org/, la especificación dice que una cadena puede incluir "cualquier carácter UNICODE", pero esto me confunde.

  • JSON es un formato de comunicación correcto? En esencia, todo se debe traducir a bytes.
  • En cambio, UNICODE es un formato lógico y debe estar codificado en para poder transmitirlo, ¿no?

Entonces, ¿qué querían decir allí?

Respuesta

16

Desde el 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

siempre estoy confundido cuando la gente dice "codificado en Unicode", ya que (como yo lo entiendo) Unicode es un conjunto de caracteres, no una codificación. ¿No debería ser eso "DEBERÁ usar el conjunto de caracteres Unicode, con una codificación predeterminada de UTF-8"? Estoy sorprendido de ver tal cosa en un RFC. – ALEXintlsos

3

JSON es un formato de serialización que puede incluir caracteres Unicode. La representación de bytes de esta cadena Unicode generalmente se envía por cable, normalmente a través del protocolo HTTP que usa encabezados HTTP para especificar la codificación para el cliente que es UTF-8.

+0

Los últimos estados RFC: nota: no hay parámetro "charset" se define para este registro. Agregar uno realmente no tiene ningún efecto en los destinatarios compatibles. –

1

Usted es correcto que todo debe traducirse en bytes, y por lo general que por lo general ocurre a través de un UTF (Unicode Transformation Format). El JSON RFC explica en section 3 cómo saber qué UTF se está utilizando.

Cuestiones relacionadas