UTF-8, ¿cuál es su relación con Unicode? ¿Cuál es el nombre completo de UTF-8?
UTF-8 (Formato de transformación Unicode de 8 bits) es una codificación de caracteres de longitud variable para Unicode, también conocida como Unicode. Creado por Ken Thompson en 1992. Actualmente está estandarizado como RFC 3629. UTF-8 codifica caracteres Unicode utilizando de 1 a 6 bytes. Utilizada en páginas web, la página puede mostrar idiomas simplificados, tradicionales y otros (como inglés, japonés, coreano) de manera unificada.
De todos los juegos de caracteres, quizás el más conocido sea el juego de caracteres de 7 bits conocido como ASCII. Es la abreviatura de American Standard Code for Information Interchange, diseñada para las comunicaciones en inglés americano. Consta de 128 caracteres, incluidas letras mayúsculas y minúsculas, números del 0 al 9, signos de puntuación, caracteres que no se imprimen (4 nuevas líneas, tabulaciones, etc.) y caracteres de control (retroceso, campana, etc.).
Sin embargo, al estar diseñado para inglés, surgen problemas al tratar con escrituras asiáticas que tienen tildes (como el pinyin chino). Por lo tanto, se crearon algunos conjuntos de caracteres ASCII extendidos que incluían 255 caracteres. Uno de ellos suele denominarse juego de caracteres IBM, que utiliza caracteres con valores entre 128 y 255 para dibujar y dibujar líneas, así como algunos caracteres europeos especiales. Otro conjunto de caracteres de 8 bits es ISO 8859-1Latin 1, también conocido como ISOLatin-1. Utiliza caracteres entre 128 y 255 para codificar caracteres de idiomas especiales en el alfabeto latino, de ahí el nombre. Los idiomas europeos no son los únicos idiomas del mundo, por lo que los idiomas asiáticos y africanos no son compatibles con conjuntos de caracteres de 8 bits. Sólo el alfabeto chino (o pictogramas) tiene más de 80.000 caracteres.
Pero al combinar algunos caracteres similares en chino, japonés y vietnamita, en diferentes idiomas, diferentes caracteres representan diferentes palabras, de modo que solo se pueden usar 2 bytes para codificar las palabras en el texto en casi todos. regiones. Por lo tanto, se creó la codificación UNICODE.
Extiende el conjunto de caracteres ISO Latin-1 agregando un byte alto. Cuando estos bits de byte alto son 0, el byte bajo es el carácter ISO Latin-1. UNICODE es compatible con Europa, África, Medio Oriente y Asia (incluidos los jeroglíficos estándar unificados de Asia oriental y los caracteres fonéticos coreanos). Sin embargo, UNICODE no brinda soporte para escrituras como Braille, Cherokee, Ethiopic, Khmer, Mongolian, Hmong, Tai Lu, Tai Mau. Al mismo tiempo, no admite escrituras antiguas como ahom, acadio, arameo, cuneiforme babilónico, balti, brahmi, etrusco, hitita, javanés, númida, cuneiforme persa antiguo y sirio.
Resulta que usar UNICODE para caracteres que pueden representarse en ASCII no es eficiente, porque UNICODE ocupa el doble de espacio que ASCII y el byte alto 0 es inútil para ASCII. Para solucionar este problema, han surgido algunos conjuntos de caracteres de formato intermedio que se denominan formatos de conversión universales, concretamente UTF (formato de transformación Unicode). Los formatos UTF comunes son: UTF-7, UTF-7.5, UTF-8, UTF-16 y UTF-32.
Si los caracteres UNICODE están representados por 2 bytes, la codificación en UTF-8 probablemente requerirá 3 bytes.
Y si los caracteres UNICODE están representados por 4 bytes, la codificación en UTF-8 puede requerir 6 bytes. Usar 4 o 6 bytes para codificar un carácter UNICODE puede ser demasiado, pero es raro encontrar un carácter UNICODE de este tipo.
Reglas de codificación UTF-8: si solo hay un byte, su bit binario más alto es 0; si son varios bytes, el primer byte comienza desde el bit más alto y los bits binarios consecutivos son 1. El número de determina el número de bytes codificados y los bytes restantes comienzan con 10.
El carácter UNICODE que realmente representa el carácter ASCII se codificará en 1 byte y la representación UTF-8 es la misma que la representación del carácter ASCII. Todos los demás caracteres UNICODE requerirán al menos 2 bytes para convertirse a UTF-8. Cada byte comienza con una secuencia de escape. El primer byte consta de una secuencia de escape única, que consta de n unos consecutivos más un 0. El número de unos consecutivos en el primer byte indica el número de bytes necesarios para la codificación de caracteres.
Al convertir Unicode a UTF-8, puede sacar los dígitos binarios del bit bajo al bit alto del binario Unicode, 6 dígitos a la vez. Por ejemplo, los números binarios anteriores pueden ser. sacado en el formato que se muestra en el siguiente ejemplo, como se muestra arriba Rellene según el formato. Si hay menos de 8 bits, rellénelos con 0.
Resumen: Desde la perspectiva de la teoría de la comunicación, se puede entender como:
Unicode es la codificación fuente, que digitaliza el conjunto de caracteres
utf8; la codificación del canal, que es más buen almacenamiento y transferencia.
Nota: El número de bytes necesarios para convertir Unicode a UTF-8 se puede calcular de acuerdo con esta regla: si Unicode es menor que 0X80 (caracteres Ascii), será 1 byte después de la conversión. De lo contrario, el número de bytes convertidos es el número de dígitos binarios Unicode menos 1 dividido por 5.
Referencia: Du Nvliang