Codificación de páginas web ANSI, GBK, GB2312, UTF-8, GB18030 y UNICODE

La codificación siempre ha sido un dolor de cabeza para los principiantes, especialmente la diferencia entre GBK, GB2312 y UTF-8, que son las tres codificaciones de páginas web más comunes, lo que confunde a muchos principiantes y no está claro cómo explicarlo. Pero la codificación es muy importante, especialmente en la página web. Si lo que escribe no está distorsionado, pero aparece distorsionado en la página web, la mayor parte de la razón es la codificación. Además de los caracteres confusos, habrá algunos otros problemas (por ejemplo: problema de carga de CSS de IE6) y así sucesivamente. El propósito de Stalker m al escribir este artículo es explicar a fondo este problema de codificación. Si encuentra problemas similares, debe leer este artículo detenidamente.

ANSI, GBK, GB2312, UTF-8, GB18030 y UNICODE
son palabras clave de codificación más comunes. Aunque las puse juntas, no significa que estas cosas estén en una relación de nivel. El contenido de esta sección está citado de Internet con ligeras modificaciones, se desconoce la fuente del texto original, por lo que no se puede firmar.

Hace mucho, mucho tiempo, hubo un grupo de personas que decidió usar 8 transistores que se pueden encender y apagar para combinarlos en diferentes estados para representar todo en el mundo, lo llamaron un "byte". Más tarde, construyeron algunas máquinas que podían procesar estos bytes. Cuando la máquina se inició, podía usar bytes para componer muchos estados. El estado comenzó a cambiar. Llamaron a esta máquina una "computadora".

Inicialmente, las computadoras solo se usaban en los Estados Unidos. Se pueden combinar un total de 256 (2 elevado a 8) estados diferentes con un byte de ocho bits. Para fines especiales, definieron los 32 estados con números que comienzan desde 0. Una vez que se pasan los bytes acordados en el terminal y la impresora, deben realizar algunas acciones acordadas. Cuando encuentra 00 × 10, la terminal se ajustará, y cuando encuentre 0 × 07, la terminal emitirá un pitido a las personas. Por ejemplo, cuando encuentre 0x1b, la impresora imprimirá palabras invertidas o la terminal mostrará letras en color . Ven que esto es muy bueno, por lo que llaman a estos estados de bytes por debajo de 0 × 20 "códigos de control".

También representaron todos los espacios, signos de puntuación, números y letras mayúsculas y minúsculas en estados de bytes consecutivos, y los compilaron hasta el número 127, de modo que la computadora pueda usar diferentes bytes para almacenar texto en inglés. Todos se sienten bien cuando ven esto, por lo que todos llaman a este esquema el código ANSI "Ascii" (Código estándar estadounidense para el intercambio de información, Código estándar estadounidense para el intercambio de información). En ese momento, todas las computadoras del mundo usaban el mismo esquema ASCII para guardar texto en inglés.

Más tarde, el desarrollo de las computadoras se hizo cada vez más extenso. Para guardar su texto en la computadora, países de todo el mundo decidieron usar el espacio después de 127 para representar estas nuevas letras y símbolos, y agregaron muchas líneas horizontales que debe usarse al dibujar tablas., Línea vertical, cruz y otras formas, el número de serie se ha numerado hasta el último estado 255. El juego de caracteres en esta página de 128 a 255 se denomina "juego de caracteres extendido". Pero el método de numeración original ya no puede admitir más códigos.

Cuando los chinos obtienen la computadora, no hay un estado de bytes que se pueda usar para representar caracteres chinos, y hay más de 6000 caracteres chinos de uso común que deben guardarse. Por lo tanto, el pueblo chino los investigó y desarrolló de forma independiente, y canceló directamente los símbolos extraños después del 127. Regulación: El significado de un carácter menor que 127 es el mismo que antes, pero cuando dos caracteres mayores que 127 están conectados entre sí, representa un carácter chino. El primer byte (que él llama el byte alto) se usa de 0xA1 a 0xF7 , y el último Un byte (byte bajo) es de 0xA1 a 0xFE, por lo que podemos combinar más de 7000 caracteres chinos simplificados. En estos códigos, también hemos recopilado símbolos matemáticos, letras griegas romanas y seudónimos japoneses. Incluso los números, la puntuación y las letras que existen en ASCII se han recodificado en códigos largos de dos bytes. Esto es lo que a menudo se llama " caracteres de ancho completo ", pero los inferiores a 127 se denominan caracteres de" ancho medio ".

El pueblo chino ve esto muy bien, por lo que llaman a este plan de caracteres chinos "GB2312". GB2312 es una extensión china de ASCII.

Sin embargo, había demasiados caracteres chinos en China, y luego no fueron suficientes, por lo que ya no se requiere que el byte bajo sea el código interno después de 127. Siempre que el primer byte sea mayor que 127, siempre significa que este es el comienzo de un carácter chino. Lo que sigue es el contenido del conjunto de caracteres extendido. Como resultado, el esquema de codificación ampliado se denomina estándar GBK. GBK incluye todo el contenido de GB2312 y, al mismo tiempo, se han agregado casi 20.000 nuevos caracteres chinos (incluidos los caracteres tradicionales) y símbolos. Más tarde, las minorías étnicas también utilizaron computadoras, así que ampliamos y añadimos miles de nuevos personajes de minorías étnicas. GBK se amplió a GB18030. A partir de entonces, la cultura de la nación china puede transmitirse en la era de la informática.

Porque en ese momento, todos los países desarrollaron sus propios estándares de codificación como China, y como resultado, nadie conocía la codificación de los demás y nadie apoyaba la codificación de los demás. En ese momento, si los chinos querían mostrar caracteres chinos en la computadora, tenían que instalar un "sistema de caracteres chinos" para hacer frente a la visualización y la entrada de caracteres chinos. Si el sistema de caracteres se instalaba incorrectamente, la pantalla se estropeaba. arriba. ¿Cómo se puede hacer esto? En este momento, una organización internacional llamada ISO (Organización Internacional de Normalización) decidió abordar este problema. El método que adoptaron es simple: abolir todos los esquemas de codificación regionales y reconstruir un código que incluye todas las culturas, todas las letras y símbolos de la tierra. Planean llamarlo "Conjunto de caracteres codificados de múltiples octetos universales", o UCS para abreviar, o "UNICODE".

Cuando se formuló UNICODE por primera vez, la capacidad de memoria de la computadora se desarrolló enormemente y el espacio ya no era un problema. Por lo tanto, ISO estipula directamente que se deben usar dos bytes, es decir, 16 bits, para representar uniformemente todos los caracteres. Para esos caracteres de "ancho medio" en ascii, UNICODE mantiene su codificación original sin cambios, pero cambia su longitud de los 8 originales. El bit se expande a 16 bits y los caracteres de otras culturas e idiomas se vuelven a codificar de manera uniforme. Dado que el símbolo en inglés de "ancho medio" solo necesita los 8 bits inferiores, los 8 bits superiores siempre son 0. Por lo tanto, este esquema atmosférico desperdiciará el doble de espacio al guardar texto en inglés.

Sin embargo, UNICODE no consideró mantener la compatibilidad con ningún esquema de codificación existente al formularlo. Esto hace que GBK y UNICODE sean completamente diferentes en el diseño del código interno de los caracteres chinos. No existe un método aritmético simple para cambiar el contenido del texto del código UNICODE y otro tipo de código se convierten, este tipo de conversión debe realizarse consultando la tabla. UNICODE está representado por dos bytes como un carácter y puede combinar 65535 caracteres diferentes en total, lo que probablemente cubra todos los símbolos culturales del mundo.

Cuando llegó UNICODE, también vino con el auge de las redes informáticas. Cómo transmitir UNICODE en la red también es un problema que debe tenerse en cuenta. Aparecieron tantos estándares UTF orientados a la transmisión (UCS Transfer Format). Como su nombre indica, UTF8 es cada vez 8. Un bit transmite datos, y UTF16 es de 16 bits a la vez, pero para la confiabilidad de la transmisión, no hay correspondencia directa de UNICODE a UTF, pero se requieren algunos algoritmos y reglas para convertir.

Después de leer estos, creo que tiene una comprensión más clara de estas relaciones de codificación y demás. Permítanme resumir brevemente:

A través de la expansión y transformación del código ASCII en chino, el pueblo chino produjo el código GB2312, que puede representar más de 6000 caracteres chinos de uso común.
Hay demasiados caracteres chinos, incluidos caracteres tradicionales y varios caracteres, por lo que se produce la codificación GBK, que incluye la codificación en GB2312, y al mismo tiempo se expande mucho.
China es un país multiétnico y casi todos los grupos étnicos tienen su propio sistema de idioma independiente. Para poder expresar esos caracteres, continuamos expandiendo el código GBK al código GB18030.
Cada país, como China, codifica su propio idioma, por lo que aparece una variedad de códigos. Si no instala el código correspondiente, no podrá explicar qué quiere expresar el código correspondiente.
Finalmente, una organización llamada ISO no pudo soportarlo más. Juntos, crearon un código UNICODE, que es muy grande, lo suficientemente grande como para contener cualquier texto y logotipo del mundo. Por lo tanto, siempre que haya un sistema de codificación UNICODE en la computadora, no importa qué tipo de texto haya en el mundo, cuando solo necesita guardar el archivo, la codificación UNICODE normalmente puede ser interpretada por otras computadoras.
UNICODE En la transmisión de la red, hay dos estándares UTF-8 y UTF-16, cada uno de los cuales transmite 8 bits y 16 bits respectivamente.
Algunas personas tendrán preguntas. Dado que UTF-8 puede almacenar tantos caracteres y símbolos, ¿por qué hay tanta gente en China que usa GBK y otras codificaciones? Debido a que las codificaciones como UTF-8 son relativamente grandes y ocupan más espacio en la computadora, si la mayoría de los usuarios de destino son chinos, también se pueden usar codificaciones como GBK. Sin embargo, desde la perspectiva de las computadoras actuales, los discos duros están todos al precio de la col, y el rendimiento de la computadora ya es suficiente para ignorar este consumo de rendimiento. Por lo tanto, se recomienda que todas las páginas web utilicen una codificación uniforme: UTF-8.
Con respecto al problema de que el Bloc de notas no puede guardar "Unicom" por separado.
Después de crear un nuevo documento de texto, ingrese la palabra "Unicom" en él y guárdelo. Cuando lo abra de nuevo, la entrada original de "Unicom" se convertirá en dos caracteres confusos.

Este problema se debe a la colisión de codificación entre la codificación GB2312 y la codificación UTF8. Un párrafo de las reglas de conversión de UNICODE a UTF8 se cita de Internet:

UTF-8

0000 - 007F

0xxxxxxx

0080 - 07FF

110xxxxx 10xxxxxx

0800 - FFFF

1110xxxx 10xxxxxx 10xxxxxx
Por ejemplo, el código Unicode de "chino" es 6C49. 6C49 está entre 0800-FFFF, así que use una plantilla de 3 bytes: 1110xxxx 10xxxxxx 10xxxxxx. Escriba 6C49 en binario como: 0110 1100 0100 1001. Divida este flujo de bits en 0110 110001 001001 de acuerdo con el método de segmentación de la plantilla de tres bytes y reemplace la x en la plantilla para obtener: 1110-0110 10-110001 10-001001 , eso es E6 B1 89, esta es su codificación UTF8.

Cuando crea un nuevo archivo de texto, la codificación del Bloc de notas es ANSI de forma predeterminada. Si ingresa caracteres chinos en codificación ANSI, entonces es en realidad el método de codificación de la serie GB. Bajo esta codificación, el código interno de "Unicom" es :

c1 1100 0001

aa 1010 1010

cd 1100 1101

a8 1010 1000

¿Te diste cuenta? Los primeros dos bytes y el comienzo de los terceros cuatro bytes son "110" y "10", que son exactamente iguales a la plantilla de dos bytes en las reglas UTF8, así que cuando abras el Bloc de notas de nuevo, recordarás que me equivoqué. Pensé que se trataba de un archivo codificado en UTF8. Eliminemos el 110 del primer byte y el 10 del segundo, y obtendremos "00001 101010". Luego, alinee los bits y agregue los primeros. 0, obtendrá " 0000 0000 0110 1010 ", lo siento, este es UNICODE 006A, que es la letra minúscula" j ", y los dos bytes siguientes se decodifican con UTF8 para que sean 0368, que no es nada. Esta es la razón por la que los archivos que solo contienen la palabra "Unicom" no se pueden mostrar normalmente en el Bloc de notas.

De esta pregunta pueden surgir muchos problemas. Una pregunta más común es: he guardado el archivo en código XX, ¿por qué sigue siendo el código YY original cada vez que lo abro? ! Esta es la razón: aunque lo guardó como código XX, cuando el sistema lo reconoció, lo reconoció erróneamente como código YY, por lo que todavía se mostraba como código YY. Para evitar este problema, Microsoft creó algo llamado encabezado BOM.

Con respecto al problema del encabezado de la lista de materiales del archivo.
Cuando se utiliza un software como el Bloc de notas que viene con WINDOWS, al guardar un archivo codificado en UTF-8, se insertarán tres caracteres invisibles (0xEF 0xBB 0xBF, es decir, BOM) al principio del archivo. .). Es una cadena de caracteres ocultos que se utiliza para permitir que los editores, como el Bloc de notas, reconozcan si el archivo está codificado en UTF-8. De esta forma, se puede evitar este problema. Para archivos generales, esto no causará ningún problema.

Hay desventajas al hacerlo, especialmente en las páginas web. PHP no ignora la lista de materiales, por lo que al leer, incluir o hacer referencia a estos archivos, utilizará la lista de materiales como parte del texto al principio del archivo. Según las características del lenguaje incrustado, esta cadena de caracteres se ejecutará (visualizará) directamente. Como resultado, incluso si el relleno superior de la página se establece en 0, toda la página web no puede estar cerca de la parte superior del navegador porque hay estos 3 caracteres al comienzo del html. Si encuentra espacios en blanco desconocidos en la página web, es probable que el archivo tenga un encabezado BOM. Cuando encuentre este tipo de problema, ¡no incluya el encabezado de la lista de materiales al guardar el archivo!

Cómo ver y modificar el código de un documento
1, use directamente el Bloc de notas para ver y modificar. Podemos abrir el archivo con el Bloc de notas, y luego hacer clic en "Archivo" = "Guardar como" en la esquina superior izquierda, y aparecerá una ventana para guardar en este momento. Después de seleccionar el código a continuación, haga clic en Guardar.

Sin embargo, la elección de este método es muy pequeña y generalmente se usa para ver rápidamente la codificación del archivo. Recomiendo el siguiente método.

2. Utilice otros editores de texto (por ejemplo: notepad ++) para ver los cambios. Casi todos los editores de texto para adultos (por ejemplo: Dreamweaver, Emeditor, etc.) pueden ver o modificar rápidamente la codificación del archivo. Esto se refleja especialmente en notepad ++.

Después de abrir un archivo, la codificación del archivo actual se mostrará en la esquina inferior derecha.

Haga clic en "codificación" en la barra de menú de arriba para convertir el documento actual a otras codificaciones.

Error al cargar el archivo CSS de IE6.Cuando
la codificación del archivo HTML es inconsistente con el archivo que desea cargar CSS, IE6 no podrá leer el archivo CSS, es decir, el archivo HTML no tiene estilo. Desde mi punto de vista, este problema nunca ha aparecido en otros navegadores, solo en IE6. Simplemente guarde el archivo CSS como el código del archivo HTML.

Este problema solo involucra el front-end de PHP y el back-end de C #. Si usa el archivo UTF-8 para leer cada línea, el problema cambiará.
Derivación: https://blog.csdn.net/tinyletero/article/details/8197974
Fuente: http://www.qianxingzhem.com/post-1499.html

Supongo que te gusta

Origin blog.csdn.net/cao919/article/details/103999950
Recomendado
Clasificación