¿Por qué necesitas programar?
La unidad de almacenamiento más pequeña del ordenador es byte (byte), y el número de caracteres que pueden representarse con un byte es limitado, 1byte=8bits, un byte solo puede representar como máximo 255 caracteres, y hay muchos lenguajes en el mundo, hay varios caracteres que no pueden representarse con un byte, así que el carácter de representación char en Java es para resolver este problema de codificación, un char ocupa dos bytes, por lo que debe codificarse entre char y el byte unidad más pequeño. Lo contrario es la decodificación.
De hecho, codificar y decodificar es el proceso de traducción que termina ("la traducción" es fácil de entender), y varios métodos de codificación son diccionarios.
1. Código ASCII
El nombre completo es American Standard Code for Information Interchange, que es el sistema de codificación de un solo byte más común del mundo, utilizado principalmente para mostrar el inglés moderno y otros idiomas de Europa Occidental.
El código ASCII se representa con 7 bits, que solo pueden representar 128 caracteres, y 0~31 representa caracteres de control como enter, retroceso, suprión, etc.; 32~126 significa que los caracteres impresos pueden introducirse a través del teclado y mostrarse.
Entre ellas, 48~57 son de 0 a 9 diez números arábigos, 65~90 son 26 letras mayúsculas en inglés, 97~122 son 26 letras minúsculas en inglés, y el resto son algunos signos de puntuación, símbolos de operación, etc., que pueden consultar la tabla estándar ASCII para más detalles.
2、ISO-8859-1
Esta codificación es una extensión de la codificación ASCII, pero sigue siendo una codificación de un solo byte y solo puede representar un total de 256 caracteres.
Dado que ASCII solo puede representar 128 caracteres, la visualización no puede expresarse completamenteISO-8859-1 extiende la codificación ASCIIEncima del código ASCII se añaden los símbolos de texto correspondientes de lenguas de Europa Occidental, griego, tailandés, árabe y hebreo, y es compatible hacia atrás con la codificación ASCII.
3、GB2312
El nombre completo de GB2312 es "Information Technology Chinese Encoding Character Set", que es una codificación de dos bytes con un rango de codificación de A1 a F7, de los cuales A1 a A9 es el área de símbolos, que contiene un total de 682 símbolos; B0-F7 es el área de kanji, que contiene 6763 kanji.
El nombre completo es conjunto de caracteres chinos para intercambio de información, que fue lanzado por China en 1980 y se utiliza principalmente para el procesamiento de caracteres chinos en sistemas informáticos. GB2312 contiene principalmente 6763 caracteres chinos y 682 símbolos.
GB2312 cubre la mayor parte del uso de caracteres chinos, pero no puede manejar caracteres raros especiales como el chino antiguo, por lo que códigos como GBK y GB18030 aparecieron más tarde.
4、GBK
El nombre completo de GBK es "Chinese Character Internal Code Extension Specification", que parece ampliar GB2312, su rango de codificación es 8140-FEFE (eliminar XX7F), con un total de 23940 bits de código, que pueden representar 21003 caracteres chinos, y su codificación es compatible con GB2312
GBK, el nombre completo de la Especificación de Código Interno Chino, fue formulado en 1995. Principalmente amplía GB2312 y añade más caracteres chinos a su base, que contiene un total de 21.003 caracteres chinos.
GBK es compatible hacia atrás con la codificación GB2312, lo que significa que los caracteres chinos codificados en GB2312 pueden decodificarse normalmente con GBK y no aparecerán distorsionados, pero los caracteres chinos codificados con GBK no necesariamente se decodifican con GB2312.
5、GB18030
GB18030 nombre completo es la Especificación de Extensión de Código Interna de Caracteres Chinos, que es el último conjunto de caracteres internos lanzado en 2000 y aplicado en 2001, incluyendo los caracteres lingüísticos de la mayoría de las minorías étnicas en China, y contiene más de 70.000 caracteres chinos.
Principalmente utiliza codificación de caracteres de un byte, doble byte y cuatro bytes, y es compatible hacia atrás con GB2312 y GBK, aunque es un estándar obligatorio en nuestro país, pero rara vez se usa en producción real, y los más utilizados son GBK y GB2312.
6.UNICODE
Para que su idioma se muestre normalmente en el ordenador, cada país y región tiene su propio código, por lo que nadie conoce el código de los demás si hay demasiados códigos; en ese momento, la organización ISO propuso un nuevo código llamado codificación UNICODE para soportar culturas, caracteres y símbolos globales. Cuando se formuló UNICODE, la capacidad del ordenador dejó de ser un problema, por lo que se diseñó para fijarse dos bytes, y todos los caracteres se representaban en 16 bits, incluidos los caracteres en inglés que antes solo ocupaban 8 bits, por lo que eso causaba un desperdicio de espacio, y UNICODE no se promovió ni aplicó durante mucho tiempo.
7、UTF-16
La aparición del UTF-16 es ISO para crear un nuevo diccionario supralingual, a través del cual todas las lenguas del mundo puedan traducirse entre sí; puedes imaginar lo complejo y enorme que es este diccionario. UTF-16 utiliza dos bytes para representar el formato de conversión Unicode (dos bytes son 16 bits, así que UTF-16) es un método de representación de longitud fija, es decir, cualquier carácter puede representarse en dos bytes. Esto hace que sea muy cómodo representar personajes. Sin embargo, también hay un defecto: gran parte de los caracteres puede representarse en un solo byte, pero UTF-16 usa dos bytes, lo que supone un desperdicio de espacio de almacenamiento. Así que hay otra forma de codificar, que es UTF-8.
UTF-16 es la implementación específica de UNICODE, 16 son 16 bits, UTF-16 es el origen, definiendo cómo se almacenan los caracteres UNICODE en el ordenador, UTF-16 también utiliza dos bytes para representar cualquier carácter, lo que hace que la cadena de operaciones sea muy eficiente, lo que también es una razón importante por la que Java utiliza UTF-16 como formato para almacenar caracteres en memoria.
UTF-16 es adecuado para su uso entre disco y memoria, y la conversión de caracteres y bytes entre sí será más sencilla y eficiente, pero no es adecuado para la transmisión en red, lo que podría dañar el flujo de bytes.
8、UTF-8
UTF-8 utiliza una tecnología de longitud variable donde cada región de codificación tiene diferentes longitudes de código, y distintos tipos de caracteres pueden consistir en 1-6 bytes.
Las reglas de codificación para UTF-8 son las siguientes:
1) Si es 1 byte y el bit más alto es 0, significa que es 1 carácter ASCII. Se puede ver que todas las codificaciones ASCII ya son UTF-8
2) Si es 1 byte, empezando por 11, el número de 1 consecutivos implica el número de bytes de este carácter, por ejemplo: 110xxxxx significa que es el primer byte de un carácter UTF-8 de doble byte
3) Si es de 1 byte, empezando por 10, significa que no es el primer byte, debes esperar hacia adelante para obtener el primer byte del carácter actual.
Aunque UTF-16 es muy eficiente, también es la mayor desventaja de UNICODE, ya que todos los caracteres de un solo byte deben tener en cuenta dos bytes, y el espacio de almacenamiento se duplica, lo que obviamente consume recursos y no se ajusta a la situación actual de rápido desarrollo de Internet. Así, con UTF-8, es una implementación de codificación de caracteres de longitud variable de UNICODE, que puede usar 1~6 bytes de longitud fija para codificar caracteres UNICODE.
UTF-8 utiliza almacenamiento de un solo byte para caracteres ASCII, y si un solo carácter se corrompe, no afectará a los caracteres posteriores, por lo que UTF-8 es ideal para la web tradicional y es una de las codificaciones más utilizadas hoy en día.
Si quieres representar al chino, la eficiencia de codificación UTF-8 es mayor que GBK y menor que UTF-16, por lo que también es el método de codificación más ideal aparte de GBK. |