Métodos de codificación comunes para caracteres
1. Código ASCII
Este fue desarrollado por los Estados Unidos en la década de 1860 con el fin de establecer el relación entre caracteres ingleses y sistemas binarios Especificación de codificación desarrollada, puede representar 128 caracteres, incluidos caracteres ingleses, números arábigos, caracteres españoles y 32 caracteres de control. Utiliza un byte para representar un carácter específico, pero solo usa los últimos 7 bits para representar el carácter (2 ^ 7 = 128), y el bit superior se establece uniformemente en 0.
2. Código ASCII extendido
El código ASCII original es suficiente para los países de habla inglesa, pero algunos idiomas en algunos países europeos tienen pinyin y 7 bytes no son suficientes. Por lo tanto, algunos países europeos decidieron utilizar los bits más altos de los bytes no utilizados para codificar nuevos símbolos. Por ejemplo, é en francés está codificado como 130 (binario 10000010). Así, el sistema de codificación utilizado en estos países europeos puede representar hasta 256 símbolos. Sin embargo, surge un problema: diferentes países tienen diferentes alfabetos, por lo que, aunque todos utilizan un sistema de codificación de 256 símbolos, las letras que representan no son las mismas. Por ejemplo, 130 representa é en codificación francesa, pero representa la letra Gimel (?) en codificación hebrea y 130 en codificación rusa. En la codificación hebrea, "..." representa "...", mientras que en la codificación rusa representa otro símbolo. Pero de todos modos, los símbolos para los segmentos 0-127 son los mismos en todas estas codificaciones excepto en los segmentos 128-255. Este problema llevó directamente a la creación de la codificación Unicode.
3.Conjunto de símbolos Unicode
Como se mencionó en la sección anterior, existen muchos métodos de codificación en el mundo y los mismos números binarios pueden interpretarse como símbolos diferentes. Entonces, para abrir un archivo de texto, debe saber cómo está codificado; de lo contrario, si lo interpreta con la codificación incorrecta, se convertirá en un galimatías. ¿Por qué los correos electrónicos suelen aparecer confusos? Esto se debe a que el remitente y el destinatario utilizan codificaciones diferentes. Unicode es un código de este tipo: contiene todos los símbolos del mundo y cada símbolo es único. Por ejemplo, U+0639 representa la letra árabe Ain, U+0041 representa la letra mayúscula inglesa A y U+4E25 representa el carácter chino "yan". Puede ver la tabla de correspondencia de símbolos o la tabla de correspondencia de caracteres chinos especiales en unicode.org. Mucha gente habla de codificación Unicode, pero Unicode es en realidad un conjunto de símbolos (que contiene todos los símbolos del mundo), no un nuevo método de codificación.
Sin embargo, solo porque Unicode contiene todos los caracteres, los caracteres en algunos países pueden representarse con un byte, mientras que los caracteres en algunos países deben representarse con varios bytes. Esto plantea dos preguntas: primero, si hay dos bytes de datos, ¿cómo sabe la computadora que estos dos bytes representan un carácter chino? ¿O dos letras inglesas? En segundo lugar, dado que diferentes caracteres requieren diferentes longitudes de almacenamiento, si Unicode estipula que se utilizan 2 bytes para almacenar un carácter, entonces el primer byte del almacenamiento de caracteres en inglés es 0, lo que desperdicia mucho espacio de almacenamiento.
Los resultados de los dos problemas anteriores son: 1) Hay muchas formas de almacenar Unicode, es decir, hay muchos formatos binarios diferentes que se pueden usar para representar Unicode. 2) Unicode no se popularizará hasta que aparezca Internet.
4. UTF-8
La popularidad de Internet requiere fuertemente la aparición de una codificación unificada. Otras implementaciones incluyen UTF-16 y UTF-32, pero en gran medida no se utilizan en Internet. Nuevamente, la conexión aquí es que UTF-8 es una implementación de Unicode.
Una de las características más importantes de UTF-8 es que es una codificación de longitud variable. Puede utilizar de 1 a 4 bytes para representar un símbolo y variar la longitud del byte según el símbolo.
Las reglas de codificación de UTF-8 son muy simples, con solo dos reglas:
1) Para símbolos de un solo byte, el primer bit del byte se establece en 0 y el siguiente 7 El bit es el código Unicode del símbolo. Por lo tanto, para las letras inglesas, la codificación UTF-8 es la misma que la codificación ASCII.
2) Para símbolos de n bytes (n>1), los primeros n bits del primer byte se establecen en 1, los n+1 bits se establecen en 0 y los siguientes bytes Los dos primeros Todos los dígitos están configurados en 10. Los bits restantes que no se mencionan son los códigos Unicode del símbolo.
5.GBK/GB2312/GB18030
GBK y GB2312 se utilizan para codificar caracteres chinos simplificados, pero GB2312 solo admite la codificación de más de 6000 caracteres chinos, mientras que GBK admite más de 10.000 La codificación de caracteres chinos. GB18030 se utiliza para codificar caracteres chinos tradicionales. Todos los caracteres chinos se almacenan en dos bytes.
En términos generales:
Código ASCII: se utiliza para representar el inglés. Se representa mediante 1 byte, donde el primer bit se designa como 0, y los 7 bits restantes almacenan datos, un. * ** puede representar 128 caracteres.
Codificación ASCII extendida: se utiliza para representar más caracteres europeos. Utiliza 8 bits para almacenar datos. Un *** puede representar 256 caracteres.
GBK/GB2312/GB18030: representa caracteres chinos. . GBK/GB2312 representa chino simplificado y GB18030 representa chino tradicional.
Unicode: Contiene todos los caracteres del mundo y es un conjunto de caracteres.
UTF-8: Es una de las implementaciones de caracteres Unicode. Utiliza de 1 a 4 caracteres para representar un símbolo y cambia la longitud del byte según el símbolo.