A continuación se proporcionan 4 soluciones diferentes para caracteres confusos, que básicamente cubren las diferentes situaciones en las que aparecen caracteres confusos en el desarrollo web.
La solución de código confuso se propone principalmente para el entorno de desarrollo java + mysql. Siempre que se realicen las modificaciones correspondientes, se puede utilizar para resolver el problema del código confuso en diferentes entornos de lenguaje.
1. La página JSP muestra caracteres confusos.
La siguiente página de visualización (display.jsp) aparece confusa:
código de programa
<%
out.print("Procesamiento JSP chino");
%>
Para diferentes servidores WEB y diferentes versiones de JDK, los resultados del procesamiento son diferentes. Motivo: el método de codificación utilizado por el servidor es diferente y el navegador muestra resultados diferentes para diferentes caracteres. Solución: especifique el método de codificación (gb2312) en la página JSP, es decir, agregue: <%@ page contentType="text/html; charset=gb2312"%> a la primera línea de la página para eliminar caracteres confusos. La página completa es la siguiente:
<%@ página contentType="text/html; charset=gb2312"%>
<%
out.print("Procesamiento JSP chino");
%>
2. Aparecen caracteres confusos cuando el formulario se envía en chino. A continuación se muestra una página de envío (submit.jsp) con el siguiente código:
Código de programa
.
El siguiente es el código de la página de procesamiento (process.jsp):
Código del programa
<%@ página contentType="text/html; charset=gb2312"%>
<%=request.getParameter("nombre")%>
Si los caracteres en inglés enviados en submit.jsp se pueden mostrar correctamente, si se envían los caracteres chinos, aparecerán caracteres confusos. Motivo: el navegador utiliza la codificación UTF-8 de forma predeterminada para enviar solicitudes, y los métodos de codificación UTF-8 y GB2312 representan caracteres de manera diferente, por lo que no se pueden reconocer los caracteres. Solución: Codifique uniformemente la solicitud a través de request.seCharacterEncoding("gb2312") para lograr una visualización normal del chino. El código Process.jsp modificado es el siguiente:
Código de programa
<%@ página contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<%=request.getParameter("nombre")%>
3. La conexión de la base de datos está confusa.
Siempre que todo lo relacionado con el chino esté confuso, la solución es agregar useUnicode=true&characterEncoding=GBK a la URL de la base de datos y estará bien.
4. La visualización de la base de datos es confusa
En mysql4.1.0, los caracteres chinos confusos aparecerán en el tipo varchar y en el tipo de texto. Para el tipo varchar, configurarlo como un atributo binario puede resolver el problema del chino. Para el tipo de texto, se debe usar una clase de conversión de codificación para manejarlo. La implementación es la siguiente:
Código del programa
.
clase pública Convertir {
/** Convertir el código ISO-8859-1 a GB2312
*/
Cadena estática pública ISOtoGB (Cadena iso) {
Cadena gb;
intentar{
if(iso.equals("") || iso == nulo){
devolver "";
}
demás{
iso = iso.trim();
gb = nueva cadena(iso.getBytes("ISO-8859-1"),"GB2312");
devolver gb;
}
}
captura (Excepción e) {
System.err.print("Error de conversión de codificación:"+e.getMessage());
devolver "";
}
}
}
Compílelo en una clase y podrá llamar al método estático ISOtoGB() de la clase Convert para convertir la codificación.