UTF-8

UTF-8
Obra derivada CESU-8 [d]
Creador Rob Pike y Ken Thompson
Idioma de la obra o título varios idiomas [d]
fecha de apertura 2 de septiembre de 1992 [1]
Sitio oficial unicode.org/faq/utf_bom.…
Descrito en el enlace ibm.com/docs/en/i… (  Inglés)

UTF-8 (del formato de transformación Unicode en inglés  , 8 bits  - "formato de transformación Unicode, 8 bits") es un estándar de codificación de caracteres común que le permite almacenar y transmitir caracteres Unicode de manera más compacta utilizando una cantidad variable de bytes (desde 1 a 4), y es totalmente compatible con la codificación ASCII de 7 bits . El estándar UTF-8 está formalizado en RFC 3629 e ISO/IEC 10646 Anexo D.

La codificación UTF-8 ahora es dominante en el espacio web. También ha encontrado una amplia aplicación en sistemas operativos similares a UNIX [2] .

El formato UTF-8 fue desarrollado el 2 de septiembre de 1992 por Ken Thompson y Rob Pike , e implementado en Plan 9 [3] . El ID de codificación de Windows es 65001 [4] .

UTF-8, en comparación con UTF-16 , brinda la mayor ganancia en compacidad para textos latinos , ya que las letras latinas sin signos diacríticos , los números y los signos de puntuación más comunes se codifican en UTF-8 con solo un byte, y los códigos de estos caracteres corresponden a sus códigos en ASCII . [5] [6]

Algoritmo de codificación

El algoritmo de codificación en UTF-8 está estandarizado en RFC 3629 y consta de 3 etapas:

1. Determine el número de octetos ( bytes ) necesarios para codificar un carácter. El número de carácter se toma del estándar Unicode.

Rango de números de caracteres Número requerido de octetos
00000000-0000007F una
00000080-000007FF 2
00000800-0000FFFF 3
00010000-0010FFFF cuatro

Para los caracteres Unicode con números de U+0000a U+007F(que ocupan un byte con cero en el bit más significativo), la codificación UTF-8 corresponde totalmente a la codificación US-ASCII de 7 bits.

2. Establezca los bits altos del primer octeto de acuerdo con el número requerido de octetos determinado en el primer paso:

Si se requiere más de un octeto para la codificación, en los octetos 2 a 4, los dos bits más significativos siempre se establecen en 10 2 (10xxxxxx). Esto facilita la distinción del primer octeto en el flujo porque sus bits altos nunca son 10 2 .

Número de octetos Bits significativos Muestra
una 7 0xxxxxxx
2 once 110xxxxx 10xxxxxx
3 dieciséis 1110xxxx 10xxxxxx 10xxxxxx
cuatro 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

3. Configure los bits significativos de los octetos para que coincidan con el número de carácter Unicode expresado en binario. Comience a rellenar desde los bits bajos del número de carácter, colocándolos en los bits bajos del último octeto, continúe de derecha a izquierda hasta el primer octeto. Los bits libres del primer octeto que quedan sin utilizar se rellenan con ceros.

Ejemplos de codificación

Símbolo código de carácter binario UTF-8 en binario UTF-8 en hexadecimal
ps U+0024 0100100 00100100 24
¢ U+00A2 10100010 11000010 10100010 C2 A2
U+20AC 100000 10101100 11100010 10000010 10101100 E2 82 AC
𐍈 U+10348 1 00000011 01001000 11110000 10010000 10001101 10001000 F0 90 8D 88

Marcador UTF-8

Para indicar que un archivo o secuencia contiene caracteres Unicode, se puede insertar una marca de orden de bytes ( BOM ) al principio del archivo o secuencia que , cuando se  codifica en UTF-8, toma la forma de tres bytes: . EF BB BF16

1er byte segundo byte 3er byte
código binario 1110 1111 1011 1011 1011 1111
código hexadecimal EF BB BF

Quinto y sexto byte

Inicialmente, la codificación UTF-8 permitía hasta seis bytes para codificar un solo carácter, pero en noviembre de 2003, RFC 3629 prohibió el uso del quinto y sexto byte, y el rango de caracteres codificados se limitó al carácter U+10FFFF. Esto se hizo para garantizar la compatibilidad con UTF-16.

Posibles errores de decodificación

No todas las secuencias de bytes son válidas. Un decodificador UTF-8 debe comprender y manejar adecuadamente tales errores:

Notas

  1. https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  2. Estadísticas de uso de codificaciones de caracteres para sitios web, junio de  2011
  3. Copia archivada (enlace no disponible) . Consultado el 27 de febrero de 2007. Archivado desde el original el 1 de marzo de 2011.    (Inglés)
  4. Identificadores de página de códigos: aplicaciones de Windows | Documentos de Microsoft . Consultado el 14 de julio de 2018. Archivado desde el original el 16 de junio de 2019.
  5. Bueno, estoy de vuelta. Teoría de Cuerdas . Robert O'Callahan (1 de marzo de 2008). Consultado el 1 de marzo de 2008. Archivado desde el original el 23 de agosto de 2011.  
  6. Rostislav Chebikin. Todas las codificaciones de codificación. UTF‑8: moderno, competente, conveniente. . HTML y CSS . Consultado el 22 de marzo de 2009. Archivado desde el original el 23 de agosto de 2011.

Enlaces