Red de conocimiento informático - Conocimiento informático - Programación de código

Programación de código

La diferencia entre la codificación de caracteres ASCII, Unicode, GBK y UTF-8

Hace mucho tiempo, un grupo de personas decidió utilizar ocho transistores que se pueden encender y apagar para formar diferentes estados para representar todo en el mundo. Vieron que estos ocho estados de conmutación eran todos buenos, por lo que lo llamaron "byte". Posteriormente, construyeron algunas máquinas que podían procesar estos bytes. Cuando las máquinas se inician, pueden combinar muchos estados en bytes y el estado comienza a cambiar. Vieron que esto era bueno y llamaron a la máquina "computadora".

Al principio, los ordenadores sólo se utilizaban en Estados Unidos. Un byte * * * de 8 bits se puede combinar en 256 estados diferentes.

Especifican 32 estados comenzando desde 0 para fines especiales. Una vez que el terminal y la impresora alcanzan el número acordado de bytes, realizan alguna acción acordada. Si se cumple 0×10,

el terminal cambiará de línea. Cuando encuentre 0×07, el terminal emitirá un pitido para llamar a las personas. Por ejemplo, cuando se encuentra 0x1b, la impresora imprimirá la palabra en blanco inverso o el terminal mostrará las letras en color. Vieron que esto era bueno, por lo que llamaron a estos estados de bytes por debajo de 0 × 20 "códigos de control". Borraron todo nuevamente

Las mayúsculas, la puntuación, los números y las letras mayúsculas y minúsculas se representan en estados de bytes consecutivos hasta el número 127, de modo que la computadora puede usar diferentes bytes para almacenar palabras en inglés. Todo el mundo siente esto cuando lo ve.

Muy bien, por eso todos llaman a esta solución la codificación "Ascii" de ANSI (Código estándar americano para el intercambio de información). En ese momento, todas las computadoras del mundo usaban el mismo esquema ASCII para guardar caracteres en inglés.

Más tarde, al igual que se construyó la Torre de Babel, la gente de todo el mundo comenzó a usar computadoras, pero muchos países no usaban inglés y las letras en muchos países no eran códigos ASCII, por lo que las computadoras podían utilizarse.

Guarda sus palabras cuando decidan usarlas.

El espacio después de 127 se usa para representar estas nuevas letras y símbolos, y se han agregado muchas líneas horizontales, líneas verticales, cruces y otras formas que deben usarse al dibujar tablas. compilado hasta el último estado 255. . El juego de caracteres de la página 128

a la 255 se denomina "juego de caracteres ampliado". A partir de ahora no habrá ningún nuevo estado del que puedan aprovecharse los humanos codiciosos. ¡Quizás el imperialismo estadounidense no hubiera pensado que la gente de los países del tercer mundo también necesitaba usar computadoras!

Cuando los chinos adquieren computadoras, ya no tienen estados de bytes para representar los caracteres chinos, y todavía quedan más de 6.000 caracteres chinos de uso común para guardar. Pero esto no puede derrotar a la gente inteligente de China. Somos muy bienvenidos.

Simplemente cancele esos símbolos extraños después de 127.

Se estipula que el significado de los caracteres menores de 127 es el mismo que antes, pero cuando dos caracteres mayores de 127 están conectados entre sí, representan un carácter chino, utilizando los bytes anteriores a partir de 0xA1 (lo llama byte alto).

0xF7, el último byte (byte de orden inferior) oscila entre 0xA1 y 0xFE, por lo que podemos combinar más de 7000 caracteres chinos simplificados. En estos códigos también hemos añadido símbolos matemáticos, se han codificado letras romanas, griegas y kana japonesas, e incluso códigos ASCII.

Todos los números, puntuación y letras de la biblioteca se han recodificado en dos bytes, normalmente denominados caracteres de "ancho completo", y los que están por debajo de 127 se denominan caracteres de "ancho medio".

Los chinos vieron esto muy bien y llamaron a este esquema de caracteres chinos "GB2312". GB2312 es la extensión china de ASCII.

Pero hay demasiados caracteres chinos y pronto descubrimos que los nombres de muchas personas no se podían escribir aquí, especialmente algunos líderes nacionales, lo cual fue muy problemático. Por lo tanto, debemos continuar descubriendo los puntos de código no utilizados en GB2312 y usarlos honestamente.

Más tarde, cuando ya no era suficiente, ya no era necesario que el byte de orden inferior fuera un código interno posterior al 127. Siempre que el primer byte sea mayor que 127, se fija como el comienzo de un carácter chino, independientemente de si hay palabras de expansión detrás de él.

Contenido de la colección. El esquema de codificación ampliado resultante se denomina estándar GBK, que contiene todo el contenido de GB2312, al tiempo que agrega casi 20.000 nuevos caracteres chinos (incluidos los caracteres chinos tradicionales) y símbolos. Más tarde, cuando las minorías étnicas también usaban computadoras, lo ampliamos y agregamos miles de palabras nuevas para las minorías étnicas. GBK se extiende hasta GB18030. Desde entonces, la cultura de la nación china se ha transmitido de generación en generación en la era de las computadoras.

Los programadores chinos vieron que el estándar de codificación de esta serie de caracteres chinos era bueno, por lo que lo llamaron "DBCS" (juego de caracteres de doble

Byte

juego de caracteres de doble byte). En la serie estándar DBCS, la característica más importante es que los caracteres chinos de dos bytes y los caracteres ingleses de un byte coexisten en el mismo esquema de codificación, por lo que los programas que escriben son compatibles con el chino.

Debes prestar atención al valor de cada byte de la cadena. Si el valor es mayor que 127, se muestran caracteres del juego de caracteres de doble byte. En ese momento, todos eran monjes de la informática que sabían programar.

Los niños tienen que decir el siguiente mantra cientos de veces al día: "¡Un carácter chino cuenta como dos palabras en inglés! Un carácter chino cuenta como dos caracteres en inglés..."

Porque En ese momento, todos los países eran como China y también habían formulado sus propios estándares de codificación. El resultado es que nadie entiende la codificación de los demás y nadie apoya la codificación de otras personas. Incluso el continente y la provincia de Taiwán sólo están separados por 150 mares.

En esta región, las regiones hermanas que usan el mismo idioma también usan DBCS diferentes.

Esquema de codificación: en ese momento, si la gente en China quería que las computadoras mostraran caracteres chinos, tenían que instalar un "sistema de caracteres chinos" para manejar la visualización y la entrada de caracteres chinos, pero esa persona feudal ignorante en la provincia de Taiwán escribió un programa de adivinación.

Debes instalar otro conjunto para soportar BIG5.

¿Qué tipo de codificación "Sistema de caracteres chinos eternos" se puede utilizar? Si instalas el sistema de caracteres incorrecto, ¡el monitor funcionará mal! ¿Qué debo hacer? Además, entre las naciones del mundo todavía hay personas pobres que no tienen acceso a computadoras por un tiempo. ¿Qué pasa con sus palabras?

¿Cómo hacerlo? ¡Qué propuesta tan babilónica para las computadoras!

En ese momento apareció en el tiempo el Arcángel Gabriel, un hombre llamado Esopo.

La organización internacional (Organización Internacional de Normalización) decidió solucionar este problema. Su enfoque fue simple: eliminar todos los esquemas de codificación regionales y crear un nuevo esquema que abarque todas las culturas, alfabetos y símbolos de la Tierra.

¡Contraseña! Planean llamarlo "Conjunto de caracteres codificados universales de múltiples octetos", o UCS, comúnmente conocido como "unicode".

Cuando se formuló Unicode por primera vez, la capacidad de memoria de las computadoras se había desarrollado enormemente y el espacio ya no era un problema. Por tanto, ISO

estipula directamente que todos los caracteres deben estar representados por dos bytes, es decir, 16 bits. Para esos caracteres de "medio ancho" en ASCII, el paquete Unicode mantiene su codificación original sin cambios y solo cambia su longitud original.

Los últimos 8 bits se amplían a 16 bits y se recodifican todos los caracteres de otras culturas e idiomas. Debido a que los símbolos en inglés de "medio ancho" solo necesitan usar los 8 bits inferiores, sus 8 bits superiores siempre son 0, por lo que esta gran solución es

Guardar texto en inglés desperdiciará el doble de espacio.

En ese momento, los programadores que venían de la vieja sociedad comenzaron a descubrir un fenómeno extraño: su función strlen no era confiable y un carácter chino ya no equivalía a dos caracteres, ¡sino a uno! Sí, a partir de Unicode, ya sean letras inglesas de ancho medio o caracteres chinos de ancho completo, ¡todos son "un carácter" unificados! Al mismo tiempo, todos son "dos bytes" unificados. Tenga en cuenta la diferencia entre "carácter" y "byte". Un "byte" es una unidad de almacenamiento físico de 8 bits y un "carácter" es un símbolo culturalmente relevante. En Unicode, un carácter tiene dos bytes. La era en la que un carácter chino cuenta como dos palabras en inglés casi ha terminado.

Unicode no es perfecto, por lo que aquí surgen dos problemas. Una es, ¿cómo distinguimos Unicode y ASCII? ¿Cómo sabe la computadora que tres bytes representan un símbolo en lugar de tres símbolos? El segundo problema es que ya sabemos que para las letras inglesas un byte es suficiente. Si Unicode estipula que cada símbolo está representado por tres o cuatro bytes, entonces cada letra en inglés debe estar precedida por dos o tres bytes de 0, lo cual es una gran pérdida de espacio de almacenamiento, el tamaño del archivo de texto también será dos o. tres veces mayor, lo cual es inaceptable.

Unicode no sería popular durante mucho tiempo hasta la aparición de Internet. Para resolver el problema de cómo transmitir Unicode en la red, han surgido muchos estándares de transmisión UTF (UCS Transport Format). Como sugiere el nombre, UTF-8 transfiere datos de 8 bits a la vez, mientras que UTF-16 transfiere datos de 16 bits a la vez.

UTF-8 es la implementación Unicode más utilizada en Internet y está diseñada para la transmisión, lo que hace que la codificación no tenga bordes para que se puedan mostrar caracteres de todas las culturas del mundo.

Una de las características más importantes de UTF-8 es que es un método de codificación de longitud variable. Puede utilizar de 1 a 4 bytes para representar un símbolo y la longitud del byte varía según el símbolo. Cuando el carácter es un código ASCII,

el rango de códigos, que está representado por un byte, la codificación de un byte del carácter ASCII se conserva como parte del mismo. Tenga en cuenta que Unicode ocupa 2 bytes, mientras que UTF-8 ocupa 1 byte.

los caracteres ocupan 3 bytes). No existe una correspondencia directa entre Unicode y uft-8, pero se necesitan algunos algoritmos y reglas para la conversión.

Rango de símbolos Unicode | Codificación UTF 8

(Hexadecimal)|(Binario)

———————————— ——— ———————–

0000 0000-0000 007F | FFFF | 110 xxxxx 10 xxxxx 10 xxxxx 10 xxxxx

0001 0000-0010 FFFF | 1110 xxxxx 10 xxxxx 10 xxxxx 10 xxxxx 10 xxxxx

La codificación de caracteres era muy vaga antes, busque en línea Los datos son confusos. Después de leer este interesante artículo, conecté los puntos de conocimiento vagos antes e hice un resumen. ¡Mis amigos y yo lo entendimos!