He estado estudiando la codificación UTF-8 durante los últimos días y estoy tan confundido que compartiré mis opiniones contigo. Bienvenido a aprobar. Los siguientes son mis pensamientos. Si hay algún problema, no dude en ilustrarme y ayudarme a señalarlo.
Digresiones relacionadas:
1. Sistema operativo
El sistema de ventanas es todo Unicode internamente. Los nombres de carpetas, nombres de archivos, etc. son todos Unicode y se pueden mostrar normalmente en cualquier sistema de idioma.
2. Método de entrada:
La salida de Microsoft Pinyin es Unicode y la salida de Smart ABC es chino simplificado (por lo que Smart ABC no se puede usar en sistemas que no sean de chino simplificado y solo se puede escribir en inglés).
3. Área de texto de la página web
El área de texto de la página web se muestra en Unicode. Entonces se mostrará todo lo que escribas. Pero algunos cuadros de entrada creados en flash no funcionarán.
4. Acceso2000
Los datos guardados en Access son Unicode y se pueden mostrar en cualquier sistema de idioma.
Si algunos caracteres no son normales cuando se ven en la vista de datos, es porque la fuente utilizada para la visualización no es una fuente Unicode.
Cambie a la fuente Arial Unicode MS para mostrar todo. (acceda a la ayuda, busque, ingrese Unicode, hay instrucciones disponibles)
5. Palabra
Conversión entre chino tradicional y chino simplificado en Word Después de convertir del chino simplificado al chino tradicional, el código interno sigue siendo chino simplificado. De hecho, son solo caracteres del chino tradicional en chino simplificado.
6. ASP es internamente Unicode y todo el texto se almacena en Unicode. Convierta al juego de caracteres especificado cuando sea necesario.
Primero saquemos la conclusión:
<%@ codepage=936%>Chino simplificado
<%@ codepage=950%>Chino tradicional
<%@ página de códigos=65001%>UTF-8
La página de códigos especifica la codificación en la que IIS lee la cadena pasada (envío de formulario, transmisión de la barra de direcciones, etc.).
También especifica la codificación a la que se convierten todas las variables de texto desde Unicode,
También especifica la codificación a la que se convierten desde Unicode los datos recuperados de la base de datos. (Tenga en cuenta esto, es muy importante).
Palabras clave:
Lectura: Una cadena, si se lee en chino simplificado serán algunos caracteres, si se lee en chino tradicional serán algunos caracteres, la codificación de la cadena en sí no ha cambiado.
Conversión: el sistema convierte activamente, por ejemplo, del carácter "化" de Unicode al carácter "化" de Big5, el código interno se convierte en Big5. Si no hay ninguna palabra correspondiente en Big5, se conserva el formato Unicode (&#xxxx;)
Chino simplificado: seis conclusiones
Forma hexadecimal Unicode: seis conclusiones
Forma decimal Unicode: seis conclusiones
El siguiente es el proceso de conversión de codificación que especulé:
Cliente: método de entrada Unicode - cuadro de entrada Unicode - convertir de Unicode a la codificación correspondiente mediante charset () - codificación de envío de formulario
Lado del servidor: IIS decodifica el formulario - lee según la codificación especificada por la página de códigos - convierte al Unicode correspondiente - se puede leer con solicitud ("") - realiza algún procesamiento - guarda en la base de datos en codificación Unicode
Lado del servidor: lea los datos Unicode de la base de datos y conviértalos a la codificación especificada por la página de códigos --- genere el código fuente -- IE lo lee y muestra según el conjunto de caracteres.
A continuación se muestran algunos ejemplos:
Ejemplo 1:
Supongamos que hay tres páginas ASP, una página de mensaje típica:
1.write.asp es un formulario de entrada simple y se envía a add.asp.
<META http-equiv="Tipo de contenido" content="text/html; charset=big5">
2.add.asp recibe mensajes y los guarda en la base de datos
<%@ página de códigos=936%>
3.read.asp obtiene mensajes de la base de datos y los muestra.
<%@ página de códigos=936%> juego de caracteres=GB2312 o
<%@ página de códigos=950%> juego de caracteres=big5
Puedes adivinar. Utilicé el método de entrada Microsoft Pinyin para ingresar "Discusión de Hua Liu" en write.asp. ¿Qué se mostrará en read.asp al final?
¿Está mareado? Analicémoslo desde el principio.
Ejemplo 2:
¿Qué pasará si cambiamos <%@ codepage=936%> en add.asp en el Ejemplo 1 a <%@ codepage=950%>?
¿Qué encontraste aquí?
1. Si el texto ingresado es diferente del conjunto de caracteres correspondiente, una vez convertido, pueden aparecer los caracteres en formato Unicode. He aquí por qué. Todo el proceso se conserva a partir de ahora.
2. La página de códigos en Add.asp determina el texto guardado en la base de datos y qué idioma corresponde a Unicode. Por ejemplo, página de códigos=936.
Luego, la base de datos guarda el Unicode chino simplificado (la base de datos recupera el sistema chino simplificado, todo es normal),
Codepage=950 guarda Unicode en chino tradicional (sería un error recuperar el sistema chino simplificado).
3. Preste atención al proceso de cambio de la cadena:
1) Método de entrada --- CharsetUnicode ---- especifica la asignación del juego de caracteres
2) Conjunto de caracteres ---- cadena de codificación de formulario codificación simple
3) El proceso inverso al paso anterior de decodificación de formularios, los dos pasos se compensan.
4) La cadena à presione la página de códigos para leer la cadena y la cadena no ha cambiado. Este paso puede causar "malentendidos de lectura".
5) Convertir al conjunto de caracteres especificado en la página de códigos Unicode correspondiente----mapeo Unicode
6) Procesamiento intermedio, sin cambios en la base de datos, ingresado directamente en formato Unicode
7) Presione la página de códigos para leer la base de datos Unicode ---- mapeo del conjunto de caracteres especificado en la página de códigos
8) Muestra que la cadena leída del juego de caracteres especificado por Charset no ha cambiado.
Ilustremos con el ejemplo 1:
Ejemplo 2:
Mareado. Ahora pongamos en práctica el conocimiento.
Caso 1.
El código que funciona bien en el sistema chino simplificado se confunde en la base de datos cuando se coloca en un espacio externo, y los datos originales también se confunden.
Análisis: debido a que la mayoría de la gente suele utilizar el sistema chino simplificado, la página de códigos predeterminada es 936, por lo que no importa si no todos la escriben.
Pero cuando viajamos al extranjero surgen problemas de espacio. El Unicode en la base de datos se ha convertido a la codificación en inglés, por lo que después de convertir el chino simplificado original en la base de datos al inglés, la visualización de GB quedará naturalmente confusa.
Como se muestra en la imagen, el texto recién ingresado se muestra normalmente, pero el Unicode en inglés se guarda en la base de datos.
Solución: agregue <%@codepage=936%> a todo.
Todo el proceso sólo implica la conversión entre chino simplificado y el Unicode correspondiente.
Caso 2:
¿Qué debo hacer si quiero convertir códigos y datos de chino simplificado a la versión completa de chino tradicional?
Análisis: 1. La codificación de todos los archivos de código se cambia a Big5 y el archivo en sí se guarda en chino tradicional.
2. <%@ página de códigos=936 %>
3.Juego de caracteres=grande5
4. No importa la versión de acceso, porque los datos de acceso son Unicode.
5. Ok, el código se puede ejecutar bajo el sistema chino tradicional puro.
6. Cuestiones pendientes: Habrá algunos signos de interrogación al leer los datos originales en chino simplificado. El efecto es el mismo que el de la lectura de 950 en el ejemplo 1, pantalla big5. Debido a que el Unicode del chino simplificado se convierte al chino tradicional, algunos caracteres no están en chino tradicional, por lo que aparecerán signos de interrogación.
7. Solución: use una página ASP temporal, página de códigos = 65001, léala como Unicode chino simplificado, use una función Unicode->Big5 para convertirla a chino tradicional y luego vuelva a escribirla en la base de datos. Esto debería funcionar, ¿verdad?
Los dos casos los deduje completamente basándome en la teoría y no han sido confirmados.
Se aceptan críticas y correcciones si tienes experiencias similares.