El código del diccionario es acii
La tecnología informática moderna se originó en los Estados Unidos, y la codificación se originó naturalmente en los Estados Unidos. El código ASCII (Código estándar americano para el intercambio de información) es el primer conjunto de códigos informáticos universales, que incluye caracteres en inglés, números arábigos y algunos símbolos comunes. Un ***128 ocupa un byte y el primer dígito se complementa con 0. Por ejemplo, la letra mayúscula A comúnmente utilizada es 65 (0100001) y la letra minúscula A es 97. Por lo tanto, en JAVA, podemos convertir letras mayúsculas y minúsculas de esta manera:
Literalmente, el conjunto de caracteres contiene la colección de caracteres especificada, la codificación es la conversión de palabras en códigos numéricos correspondientes, y esto también es correcto. Al igual que el código AsciI, contiene 128 caracteres específicos, a cada carácter se le asigna un número de serie, que puede denominarse conjunto de caracteres. La codificación es como encontrar el número de serie correspondiente en el juego de caracteres y luego convertir el número de serie en un valor específico de acuerdo con las reglas de codificación, lo que se denomina codificación. El código AscII es relativamente simple, ocupa solo un byte y su resultado de codificación es el mismo que el valor del número de secuencia de la tabla de códigos, por lo que la distinción entre su conjunto de caracteres y conceptos de codificación no es estricta.
Con el desarrollo de la tecnología informática, el código AsciI sólo se puede utilizar para limitar los caracteres latinos, lo que afecta seriamente su uso en países que no hablan inglés. Por lo tanto, cada país y región ha desarrollado métodos de codificación correspondientes a los idiomas locales. GB2312 es el código estándar del juego de caracteres chinos formulado por la Administración Estatal de Estándares, y GB significa estándar nacional. De hecho, además del chino, GB2312 también contiene caracteres latinos, griegos, japoneses, rusos y otros caracteres comunes.
GB2312 ocupa dos bytes, lo que significa que la cantidad de caracteres que puede contener es 2 16 ***65536. Para facilitar la administración, GB2312 divide todos los caracteres en varios grupos de 96 caracteres. Cada grupo se denomina región y la ubicación del carácter se denomina ubicación, de modo que cada carácter tiene un código de área correspondiente. Por ejemplo, el área donde se encuentra el carácter chino "安" es el área 16, el número de ubicación es 18 y su código de área es 1618. ¿Cómo convertir el código de área en código? Es muy simple. Separe el código de área y agregue 0xA0 al código de área y al número de ubicación respectivamente, que es el código correspondiente. Por lo tanto, el código GB2312 de "An" es 0xa 160 xa 18 = 0xb0b 2.
En este punto, la introducción de GB2312 está básicamente completa, pero todavía queda una pregunta. ¿Cómo lidiar con el código AscII en GB2312? De hecho, GB2312 es compatible con el código AscII. Como se mencionó anteriormente, el código GB2312 se obtiene sumando 0 al código de posición respectivamente. El código de A es 1010, lo que significa que el código de GB2312 debe comenzar con 1 y el código de AscII es
. GBK es GB2312 La versión mejorada incluye no solo caracteres chinos comunes, sino también caracteres chinos tradicionales, radicales, caracteres raros, etc., que pueden cumplir con casi todos los escenarios donde se utilizan caracteres chinos.
Unicode es un esquema de codificación de caracteres desarrollado por la Organización Internacional de Codificación y puede acomodar todos los caracteres y símbolos del mundo. El rango es de 0-0x10FFFF, dividido en 17 grupos. Cada grupo se llama plano y cada plano contiene 65536 caracteres. De hecho, actualmente sólo se utilizan unos pocos aviones, como el avión básico (BMP) más utilizado. El rango es 0-0xFFFF. El otro rango de 0x0010000 a 0x10ffffff se llama plano secundario (SMP). De hecho, BMP básicamente puede cumplir con todos los requisitos de nuestro uso diario.
Unicode contiene casi todos los caracteres utilizados en el mundo. Por ejemplo, la codificación Unicode del carácter chino "安" es 0x5B89.
¿Qué es la codificación UTF? Unicode se introdujo anteriormente. Es un conjunto de caracteres que especifica el valor correspondiente a cada carácter. UTF es un método de implementación específico que utiliza varios métodos para almacenar los valores numéricos correspondientes de los caracteres y se divide en UTF-8/16/32 según diferentes métodos de implementación.
Utf8 es un código de longitud variable.
Si es de 1 byte, es lo mismo que el código Ascall. Cuando es de varios bytes, el primer bit del primer byte comienza a llenarse con 1, y varios bytes de 1 representan varios bytes. Por ejemplo, 110x xxxx representa dos bytes y el segundo byte es 65438 de principio a fin.
Tome el carácter chino "安" como ejemplo. Su codificación Unicode es 0x5B89. Conviértalo a binario y rellénelo en el espacio utf-8. Complete las posiciones adicionales con 0 para obtener el resultado: 0xE5AE89. .
Ahora echemos un vistazo a los conjuntos de caracteres y las codificaciones. Es obvio que Unicode es un conjunto de caracteres y la codificación utf-8 es una forma de implementar conjuntos de caracteres.
Echemos un vistazo a la codificación utf-16. UTF-16 tiene una longitud fija de 2 o 4 bytes. Normalmente, podemos usar 2 bytes, lo que corresponde al BMP plano básico en Unicode. La codificación es codificación Unicode. Los números de menos de 2 bytes se rellenan con 0 delante, que también es el carácter chino "安". Su codificación Unicode es 0x5B89, por lo que UTF-6549. Por lo tanto, el código AscII también ocupará dos bytes y se desperdiciará algo de espacio. Al codificar caracteres en el plano auxiliar Unicode, UTF-16 ocupa 4 bytes y rara vez se utiliza. No se introducirán reglas de codificación específicas.
La codificación Utf-32 ocupa 4 bytes y corresponde a todos los códigos Unicode. Este método de codificación es básicamente innecesario y no requiere una comprensión profunda.
Estas palabras suelen aparecer con menos frecuencia. LE significa orden de bytes little-endian y orden de bytes little-endian, y BE significa orden de bytes big-endian y orden de bytes big-endian. Representan respectivamente los dos métodos de almacenamiento de datos en el campo informático.
Secuencia big endian:
Little endian:
De hecho, no necesitamos preocuparnos por cómo se utilizan las computadoras en el uso diario. Sin embargo, al codificar UTF-16, también tiene dos métodos de codificación, como 0x5E89, el valor big-endian se representa como 0x5E89 y el valor little-endian se representa como 0x895E. Para distinguir entre los dos métodos, al codificar UTF-16, se agrega un identificador unificado al comienzo del flujo de datos, 0xFEFF indica el orden de bytes big-endian correspondiente.
El nombre completo de Bom es secuencia de bytes, que es una secuencia de bytes. Además de utf-16, utf-8 también puede agregar bom, y su bom está fijo en 0xEFBBBF. Cuando se selecciona UTF-8 con BOM como método de codificación, esta BOM aparecerá en la secuencia de archivos generada. ¿Por qué UTF-8 no necesita BOM? Debido a que la longitud de utf8 es variable, determina la longitud de cada carácter en función de la información del primer byte y no hay problema de orden positivo y negativo. El UTF-8 que utilizamos todos los días no tiene lista de materiales.
Después de leer la introducción a la codificación de caracteres, tengo una pregunta. ¿Puede el tipo char en Java almacenar caracteres chinos?
Char en Java ocupa dos caracteres. Es fácil sacar una conclusión: si se usa utf-8, el chino no se puede almacenar. Se pueden utilizar otros métodos de codificación, como GB2312 y utf-16, para almacenar chino, ¿verdad?
En realidad, las cosas no son tan sencillas. No importa qué método de codificación elijamos en el editor, no tiene ningún efecto sobre los caracteres en Java. De hecho, char corresponde al BMP plano básico de Unicode. La codificación que elegimos en el navegador solo corresponde a la forma en que se guarda el archivo y no tiene nada que ver con la codificación utilizada por char. Del mismo modo, si especificamos una codificación en una nueva cadena, la codificación solo tendrá efecto en esa cadena, mientras que char en Java está muerto en el compilador, corresponde a BMP y también puede tratarse como utf-16. La parte de 2 bytes. .
Entonces, si el tipo char en ava puede almacenar caracteres chinos, por supuesto que sí, pero solo puede corresponder a la parte BMP, y varios caracteres chinos tradicionales no pueden hacer nada.