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]
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.
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 |
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 |
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.
No todas las secuencias de bytes son válidas. Un decodificador UTF-8 debe comprender y manejar adecuadamente tales errores:
Codificaciones de caracteres | |
---|---|
Codificaciones históricas | compensación adicional semáforo (Makarov) morse Bodo MTK-2 borrador 6 bits SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
representación moderna de 8 bits | simbolos ASCII no ASCII páginas de códigos de 8 bits cirílico KOI-8 Codificación básica maccirílico ISO 8859 1 (lat.) 2 3 cuatro 5 (kir.) 6 7 ocho 9 diez once 12 13 catorce 15 (€) dieciséis ventanas 1250 1251 (Kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM y DOS 437 850 852 855 866 "alternativa" MICRÓFONO |
Multibyte | tradicional DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 lista de personajes cirílico |
interfaz de usuario Diseño del teclado lugar traducción de línea fuente transcripción Fuentes personalizadas utilidades iconov registro |
serialización | Formatos de datos digitales de|
---|---|
Texto | |
Internet y telecomunicaciones |
|
Medios de comunicación | |
Otro |