UTF-16
De Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre
UTF-16, que significa en ISO/IEC 10646:2003 “UCS Transformation Format for 16 Planes of Group 00”, es una forma de codificación de caracteres UCS y Unicode utilizando símbolos de longitud variable. Está oficialmente definida en el Anexo C de la norma ISO/IEC 10646:2003. También está descrita en el Estándar Unicode (versión 3.0 o superior), al igual que en la RFC 2781 de la IETF.
Sus características principales son:
UTF-16 es la evolución de UCS-2, presente en el estándar Unicode hasta la versión 1.1. En UCS-2 cada punto de código se representa por su valor, lo que limitaba su uso al plano básico multilingüe. En la versión 2.0 del Estándar Unicode, la decisión de ampliar el espacio de códigos por encima del código FFFF supuso la necesidad de incluir un nuevo formato que diese soporte a los nuevos planos, 15 y 16, de uso privado. Sin embargo, el estándar no definió todavía ningún punto de código haciendo uso de este mecanismo hasta la versión 3.1.[1][2]
En UTF-16 cada punto de código entre U+0000 y U+FFFF se codifica, sin cambios, utilizando 16 bits. Este rango se corresponde con el plano básico multilingüe de Unicode, por lo que la gran mayoría de los caracteres de uso común se codifican con 16 bits.
Los caracteres de los planos adicionales se codifican mediante 32 bits. La codificación no se hace de forma directa, es decir, el código final no es el valor del punto de código. UTF-16 define un formato de transformación para estos casos denominado pares subrogados.
A la hora de valorar el espacio de almacenamiento requerido por un texto utilizando esta codificación, puede asumirse que los caracteres no incluidos en el plano básico son muy poco frecuentes y por lo tanto cada carácter utilizará 16 bits. Esta afirmación es válida también para el caso de las escrituras CJK (chino, japonés y coreano).
Unicode e ISO/IEC han limitado el espacio asignable a los códigos hasta 10FFFF, por lo que se requiere un máximo de 21 bits para la representación de cualquier carácter. Si se usan dos palabras para representar códigos por encima de FFFF, se tiene un exceso de bits. Aprovechando esta circunstancia, se diseñó el sistema de pares subrogados para representar caracteres fuera del plano básico.
Se define un par subrogado como dos palabras de 16 bits donde:
Para poder cumplir el principio de no superposición, el conjunto de valores utilizados como pares subrogados ha sido estandarizado y reservado, por lo que no puede ser utilizado para otros fines.
El sistema de pares subrogados se añadió en la versión 2.0 de Unicode, ISO 10646:xxxx, y por su diseño minimiza los conflictos que se pudieran presentar con implementaciones anteriores que no hagan uso de ellos.
Las normas de codificación establecen, por lo tanto, límites a las cadenas que se pueden formar. Según la norma, un intérprete de cadenas debe rechazar como inválidas, y no tratar de interpretar, las cadenas mal formadas.
A partir del formato de transformación UTF-16 se definen 3 esquemas de codificación. A pesar de que comparten nombres, no debe confundirse esquemas y formas de codificación. Los esquemas de codificación tratan de la forma en que se serializa la información codificada.[3] La seguridad en los intercambios de información entre sistemas heterogéneos requiere la implementación de sistemas que permitan determinar el orden correcto de los bits y bytes y garantizar que la reconstrucción de la información es correcta. Una diferencia fundamental entre procesadores es el orden de disposición de los bytes en palabras de 16 y 32 bits, lo que se denomina endianness. Los esquemas de codificación deben garantizar que los extremos de una comunicación saben cómo interpretar la información recibida.
Esquema de codificación | Endianness | Admite BOM |
UTF-16 | Big-endian o Little-endian | Sí |
UTF-16BE | Big-endian | No |
UTF-16LE | Little-endian | No |
Unicode define una marca especial, Byte order mark o BOM (Marca de orden de bytes), al inicio de un fichero o una comunicación para hacer explícita la ordenación de bytes. Esta marca es el carácter con punto de código U+FEFF. Cuando se encuentra en una posición inicial, puede ser interpretado como BOM dependiendo del contexto de la comunicación. En cualquier otra posición mantiene su semántica original como carácter ZERO WIDTH NON-BREAKING SPACE. Cuando un protocolo superior especifica el orden de bytes, la marca no es necesaria y puede omitirse, dando lugar a los esquemas de la lista anterior con sufijo BE o LE. En el caso del esquema UTF-16, que admite BOM, si este no se especifica se asume que la ordenación de bytes es big-endian.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.