2011-04-14 22 views
6

¿Qué es la codificación en XML? La codificación normal utilizada es utf-8. ¿Cómo es diferente de otras codificaciones? ¿Cuál es el propósito de usarlo?¿Qué es la codificación en XML?

+0

Consulte W3C [recomendación sobre la codificación] (http://www.w3.org/TR/xml/#charencoding). – Nishant

+0

@Nishant: esa no es realmente una buena introducción al tema de las codificaciones de caracteres en general. Y creo que de eso se trata la pregunta. –

+0

Acabo de agregar especificaciones XML como OP señaló, 'codificación normal utilizada es UTF-8'. No se supone que sea una respuesta. – Nishant

Respuesta

8

Un character encoding especifica cómo los personajes son mapeadas a bytes. Dado que los documentos XML se almacenan y se transfieren como secuencias de bytes, esto es necesario para representar los caracteres Unicode que componen un documento XML.

UTF-8 es elegido como el valor por defecto, ya que tiene varias ventajas:

  • es compatible con ASCII en ese texto ASCII todas válidas codificado es también UTF-8 válidos codificado (pero no necesariamente al revés !)
  • se utiliza sólo 1 byte por carácter para las cartas "comunes" (las que también existen en ASCII)
  • puede representar todos los caracteres Unicode existentes

Las codificaciones de caracteres son un tema más general que solo XML. UTF-8 es no restringido para ser utilizado solo en XML.

What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text es un buen artículo que ofrece una buena visión general del tema.

2

Los documentos XML pueden contener caracteres que no sean ASCII, como el noruego æ ø å o el francés ê è. Entonces, para evitar errores, configure la codificación o guarde el archivo XML como Unicode.

XML Encoding Rules

1

Cuando los datos se almacenan o se transfieren, solo son bytes. Esos bytes necesitan alguna interpretación. Los usuarios con configuraciones regionales que no son en inglés solían tener algunos problemas con los caracteres que solo aparecían en su configuración regional. Esos personajes se mostraban de forma incorrecta con frecuencia.

Con XML que tiene una información sobre cómo interpretar sus bytes, el carácter se puede mostrar de forma correcta.

+3

Tenga en cuenta que el inglés también solía tener problemas. [ASCII] (http://cstheory.stackexchange.com/questions/2066/difference-between-np-hard-and-np-complete) y [EBCDIC] (http://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code) por ejemplo, usan codificaciones completamente diferentes incluso para caracteres ingleses "normales". La codificación no es solo para "el resto del mundo" ;-) –

+2

@Joachim: Muy de acuerdo. La noción hiperconservadora y reaccionaria de que ASCII era lo suficientemente buena para nuestros abuelos, por lo que debería ser lo suficientemente buena para nosotros, es ridículamente miope y falsa. Pero terriblemente común. – tchrist

4

Cuando las computadoras se crearon por primera vez, en su mayoría solo funcionaban con caracteres que se encuentran en el idioma inglés, lo que lleva al estándar US-ASCII de 7 bits.

Sin embargo, hay muchos idiomas escritos diferentes en el mundo, y era necesario encontrar maneras de usarlos en las computadoras.

La primera forma funciona bien si se restringe a un idioma determinado, es usar una codificación específica de una cultura, como ISO-8859-1, que es capaz de representar caracteres del idioma latino-europeo en 8 bits, o GB2312 para caracteres chinos.

La segunda forma es un poco más complicada, pero teóricamente permite representar a todos los personajes del mundo, es el estándar Unicode, en el que cada personaje de cada idioma tiene un código específico. Sin embargo, dado el alto número de caracteres existentes (109,000 en Unicode 5), los caracteres Unicode normalmente se representan con una representación de tres bytes (un byte para el plano Unicode y dos bytes para el código de carácter.

maximiza la compatibilidad con el código existente (algunos todavía usan texto en ASCII), la codificación estándar UTF-8 se diseñó como una forma de almacenar caracteres Unicode, utilizando solo la cantidad mínima de espacio, como se describe en la respuesta de Joachim Sauer.

Por lo tanto, es común ver archivos codificados con conjuntos de caracteres específicos como ISO-8859-1 si el archivo está destinado a ser editado o solo leído por el software (y personas) entendiendo solo estos idiomas, y UTF-8 cuando hay la necesidad de ser altamente interoperable e independiente de la cultura. La tendencia actual es que UTF-8 reemplace a otros conjuntos de caracteres, incluso si necesita el trabajo de los desarrolladores de software, ya que las cadenas UTF-8 son más complicadas de manejar que las series de juego de caracteres de ancho fijo.

+1

Unicode también es necesario para tipos de puntuación y símbolos más sofisticados, como '¢ £ €' y "comillas", etc. No es necesario que sea mucho más difícil trabajar con Unicode si un lenguaje de programación comienza con Unicode como su conjunto de caracteres base; entonces no tiene que preocuparse por las codificaciones de ancho variable, o no debería hacerlo. – tchrist

Cuestiones relacionadas