¿Qué es la codificación Unicode? Consta de varios bytes.
La última versión de Unicode en junio de 2006 fue Unicode 4.1.0, que se lanzó el 31 de marzo de 2005. Además, en febrero de 2005, 65438 lanzó la versión beta 5.0 para que los miembros la evaluaran.
Codificación e implementación Unicode
En términos generales, el sistema de codificación Unicode se puede dividir en dos niveles: modo de codificación y modo de implementación.
1. Modo de codificación
El método de codificación de Unicode corresponde al concepto de Conjunto de Caracteres Universal (UCS) en ISO 10646. La versión práctica actual de Unicode corresponde a UCS-2, que utiliza un espacio de codificación de 16 bits. Es decir, cada carácter ocupa 2 bytes. Teóricamente, un * * * puede representar hasta 216 caracteres. Básicamente satisface las necesidades de varios idiomas. De hecho, la versión actual de Unicode aún no ha completado la codificación de 16 bits, dejando mucho espacio para usos especiales o futuras extensiones.
Los 16 caracteres Unicode anteriores constituyen un plano multilingüe básico (BMP). La versión más reciente (pero no ampliamente utilizada) de Unicode define 16 planos auxiliares, que juntos requieren al menos 21 bits de espacio de codificación, un poco menos de 3 bytes. Pero, de hecho, los caracteres del plano auxiliar todavía ocupan 4 bytes de espacio de codificación, lo que es coherente con UCS-4. Las versiones futuras se ampliarán al nivel 3 de implementación de ISO 10646-1, que cubre todos los caracteres de UCS-4. UCS-4 es un conjunto de caracteres más grande, 31 bits, que aún no está completamente poblado, y el primer bit siempre es 0, * * * necesita ocupar 32 bits, que son 4 bytes. En teoría, puede representar hasta 231 caracteres, lo que puede cubrir completamente los símbolos utilizados en todos los idiomas.
La codificación Unicode de caracteres BMP se representa como U hhhh, donde cada h representa un dígito hexadecimal. Exactamente igual que la codificación UCS-2. Después de corresponder a la codificación UCS-4 de 4 bytes, los dos bytes son iguales y los bits de los dos primeros bytes son todos 0.
2. Modo de implementación
La implementación de Unicode es diferente de la codificación. Se determina la codificación Unicode del carácter. Sin embargo, en el proceso de transmisión real, debido a que los diseños de diferentes plataformas del sistema no son necesariamente consistentes y con el fin de ahorrar espacio, la implementación de la codificación Unicode también es diferente. La implementación de Unicode se llama formato de traducción Unicode (UTF).
Por ejemplo, si un archivo Unicode contiene sólo caracteres ASCII básicos de 7 bits, si cada carácter se transmite utilizando 2 bytes de la codificación Unicode original, los 8 bits del primer byte siempre serán 0. Esto genera un enorme desperdicio. En este caso, puede utilizar la codificación UTF-8, que es una codificación de longitud variable que todavía utiliza una codificación de 7 bits para representar el carácter ASCII básico de 7 bits, ocupando un byte (el primer bit se rellena con 0). Cuando se mezcla con otros caracteres Unicode, se convertirá de acuerdo con un algoritmo determinado. Cada carácter está codificado con 1 a 3 bytes, siendo el primer bit 0 o 1 para identificación. Esto ahorra en gran medida la longitud de codificación de los documentos occidentales con caracteres ASCII de 7 bits (consulte UTF-8 para soluciones específicas). De manera similar, UTF-16, que requerirá 4 bytes de caracteres del plano auxiliar y otros caracteres extendidos UCS-4 en el futuro, también debe convertirse mediante un determinado algoritmo.
Para otro ejemplo, si usa directamente la codificación UTF-16 que es consistente con la codificación Unicode (solo caracteres BMP), entonces la comprensión del orden de bytes en computadoras y PC Acintosh es inconsistente, porque cada dirección necesita agregar papel. En este punto, el mismo flujo de bytes puede interpretarse como contenido diferente; por ejemplo, el carácter "Kui" codificado como U 594E puede confundirse con el carácter "B" codificado como U 4E59. Por lo tanto, los conceptos de Big Endian y Little Endian y BOM (Byte Order Mark) se utilizan en la implementación de codificación UTF-16. (Consulte UTF-16 para soluciones específicas).
Además, las implementaciones Unicode también incluyen UTF-7, Punycode, CESU-8, SCSU, UTF-32, etc. Algunas de estas implementaciones solo se utilizan en determinados países y regiones, y otras son métodos de planificación futura. Los métodos de implementación más utilizados actualmente incluyen el sufijo pequeño (BOM) UTF-16, el sufijo grande (BOM) UTF-16 y UTF-8. En el Bloc de notas que viene con el sistema operativo Windows XP de Microsoft, los cuatro modos de codificación que se pueden seleccionar para el cuadro de diálogo Guardar como no son codificación ANSI. Los otros tres modos de codificación son Unicode, Unicode big endian y UTF-8.
El trabajo actual en el plano auxiliar se centra principalmente en los ideogramas unificados de China, Japón y Corea en el segundo y tercer plano, por lo que la atención se centra en Unicode e incluye chino simplificado, chino estándar, japonés, Caracteres coreanos y vietnamitas como GBK, GB18030, Big5 y otras coordinaciones de codificación diversas. Teniendo en cuenta que Unicode eventualmente cubrirá todos los caracteres, en cierto sentido, estas codificaciones también pueden considerarse como una implementación hecha consumada de Unicode anterior, al igual que ASCII y su extensión Latin-1, en el espacio de codificación Unicode de 16 bits El primer byte de los dos últimos caracteres es 0 y la codificación del segundo byte es exactamente la misma que la codificación original. Sin embargo, la correspondencia entre las codificaciones de idiomas de Asia Oriental mencionadas anteriormente y las codificaciones Unicode es mucho más complicada.
Entorno no Unicode
En un entorno no Unicode, debido a los conjuntos de caracteres inconsistentes utilizados por diferentes países y regiones, es probable que no todos los caracteres se puedan mostrar normalmente. Microsoft utiliza la tecnología de tabla de conversión Codepage para resolver este problema de manera transitoria, es decir, a través de una tabla de conversión específica, los códigos de caracteres no Unicode se convierten en códigos Unicode correspondientes a los mismos caracteres utilizados en el sistema. Puede seleccionar una página de códigos en "Configuración regional y de idioma" como codificación predeterminada para codificaciones que no son Unicode, por ejemplo, 936 es chino simplificado GBK y 950 es chino normal Big5 (ambos se usan en PC). En este caso, es probable que algunos programas y documentos escritos en idiomas europeos distintos del inglés estén confusos. Sin embargo, al configurar la página de códigos en el idioma correspondiente para el procesamiento en chino, inevitablemente surgirán problemas. Básicamente, la respuesta es la adopción total de la codificación unificada, pero eso no es posible actualmente.
La tecnología de páginas de códigos ahora es ampliamente adoptada por varias plataformas. La página de códigos de UTF-7 es 65000 y la página de códigos de UTF-8 es 65001.
XML y Unicode
XML y su subconjunto HTML utilizan UTF-8 como juego de caracteres estándar. En teoría, podemos mostrar páginas web de texto de cualquier región en varios navegadores que admitan estándares XML, siempre que la computadora esté equipada con las fuentes adecuadas. Puede utilizar nnn para mostrar caracteres específicos en un formato. Nnn representa el código Unicode decimal del carácter. Si usa códigos hexadecimales, simplemente agregue el carácter X antes del código. Sin embargo, es posible que algunos navegadores antiguos no reconozcan códigos hexadecimales.
Sin embargo, debido al desarrollo de las versiones Unicode, muchos navegadores sólo pueden mostrar el conjunto de caracteres completo UCS-2, una pequeña parte de la versión Unicode actualmente en uso.
Puede comprobar cómo su navegador muestra varios códigos Unicode en la siguiente tabla:
Nombres estándar para los caracteres de código que se muestran en los navegadores (inglés)
Letra latina mayúscula "A" A
¿Letras latinas minúsculas "Sharp's"?
¿Letra latina minúscula "Espina"?
δ Letra mayúscula griega "Delta" δ
Letra cirílica mayúscula "I corta"
Letra hebrea "Qof"?
¿La letra árabe "Meem"?
¿El número 7 tailandés?
¿La sílaba etíope “Qha”?
Hiragana japonés "a"
ビKatakana japonés "a"ビ
叶carácter simplificado "叶"
Caracteres chinos tradicionales " Ye" Ye
¿La palabra en sílaba coreana "Yeob"?
Ingreso Unicode
Además de los métodos de entrada, el sistema operativo también proporciona varias formas de ingresar Unicode. Por ejemplo, los sistemas Windows posteriores a Windows 2000 proporcionan una tabla en la que se puede hacer clic. Por ejemplo, en Microsoft Word, mantenga presionada la tecla Alt, ingrese 0 y el código Unicode (decimal) de un carácter y luego suelte la tecla Alt para obtener ese carácter. Por ejemplo, Alt 033865 obtendrá la hoja del carácter Unicode. Además, al presionar Alt X, MS Word también convertirá el carácter delante del cursor usando codificación Unicode hexadecimal de cuatro dígitos.
Tabla de codificación Unicode
0000-0 fff 8000-8 fff 10000-10 fff 20000-20 fff 28000-28 fff
1000-1 fff 9000- 9 fff 21000-21 fff 29000-29 fff
AFFF 22000-22 fff 2a 000-2 fff
3000-3 francos B000-BFFF 23000-23 francos
4000-4 fff C000-CFFF 1d 000-1 dfff 24000-24 fff 2f 000-2 ffff
DFFF 25000-25 francos
EFFF 26000-26FFF
7000-7 fff F000-FFFF 27000-27 fff e 0000-E0 fff
Unicode actualmente tiene la versión 5.0. Hay una gran cantidad de científicos informáticos, lingüistas y otros científicos en todo el mundo que se especializan en Unicode. Hasta ahora, el estándar Unicode no es solo un estándar de codificación, sino también una enorme base de datos que registra el lenguaje y los materiales humanos, y también se dedica a la excavación y protección del patrimonio cultural humano.
Para chino, el código Unicode 16 ya contiene todos los caracteres chinos en GB18030 (27484 palabras). El estándar Unicode actual es poner todos los caracteres chinos del Diccionario Kangxi en códigos Unicode de 32 bits.
En pocas palabras, Unicode se extiende desde el conjunto de caracteres ASCII. En ASCII estricto, cada carácter está representado por 7 bits, o cada carácter comúnmente utilizado en las computadoras tiene 8 bits de ancho; Unicode utiliza el conjunto completo de caracteres de 16 bits. Esto permite a Unicode representar caracteres, jeroglíficos y otros símbolos que pueden usarse para la comunicación por computadora en todos los idiomas escritos del mundo. Originalmente, Unicode estaba destinado a complementar ASCII y, si era posible, eventualmente reemplazarlo. Teniendo en cuenta que ASCII es el estándar más dominante en las computadoras, este es de hecho un objetivo elevado.
Unicode afecta a todos los sectores de la industria informática, pero su impacto puede ser mayor en los sistemas operativos y los lenguajes de programación.
En este sentido, estamos avanzando. Windows NT admite Unicode de abajo hacia arriba (desafortunadamente, sólo una pequeña parte de Windows 98 admite Unicode). El lenguaje de programación C, que está inherentemente vinculado a ANSI, admite Unicode al admitir conjuntos de caracteres amplios.
Naturalmente, como programadores, normalmente nos enfrentamos a mucho trabajo pesado. Intenté aligerar la carga haciendo que todos los programas de este libro sean "Unicode". A medida que este capítulo analice Unicode, su significado quedará claro.