Cómo resolver el problema de las páginas web chinas confusas1. Primero, configure el formato de codificación en el formato de almacenamiento de archivos jsp. Eclipse guardará el archivo de acuerdo con este formato de codificación. Y compile el archivo jsp, incluidos los caracteres chinos que contiene. La segunda codificación es el formato de decodificación. Debido a que los archivos guardados como UTF-8 se decodifican en iso8859-1, definitivamente habrá problemas si hay chino. Es decir, debe ser coherente. Pero la línea del segundo lugar no puede. El valor predeterminado es utilizar el formato de codificación iso8859-1. Entonces, sin esta línea, "Soy una buena persona" también sería confuso. Debe ser consistente. La tercera codificación es controlar el método de decodificación del navegador. Si la decodificación anterior es consistente y correcta, entonces este formato de codificación no importa. Algunas páginas web aparecerán confusas porque el navegador no puede determinar el formato de codificación. Porque las páginas web a veces están incrustadas en la página, lo que hace que el navegador confunda el formato de codificación. Aparecen caracteres confusos. 2. El problema de recibir caracteres confusos después de enviar el formulario mediante el método de publicación también es un problema común. Este tipo de código confuso también se debe al formato de codificación interno de Tomcat iso8859-1, es decir, al enviar en modo de publicación, si el formato de codificación enviado no está configurado, el jsp enviado en modo iso8859-1 se enviará en utf. -8 modo. Esto da como resultado caracteres confusos. Dado que este es el motivo, existen varias formas de resolver el problema, que se comparan a continuación. A. Acepte parámetros para la conversión de codificación Stringstr=newString(request.getParameter("something").getBytes("ISO-8859-1"), "utf-8"); en este caso, cada parámetro debe ser así Transcodificación. Esto es problemático. B. Al comienzo de la página solicitada, ejecute el código de codificación solicitado request.setCharacterEncoding("UTF-8") para establecer el juego de caracteres del contenido enviado en UTF-8. En este caso, las páginas que aceptan este parámetro no necesitan transcodificarlo. Utilice directamente Stringstr=request.getParameter("something"); Pero cada página necesita ejecutar esta oración. Este método también tiene un impacto en los envíos de publicaciones y no tiene ningún efecto en los envíos de obtención y carga de archivos enctype="multipart/form-data". c Para evitar escribir request.setCharacterEncoding("UTF-8") en cada página, se recomienda utilizar filtros para todos los jsps. Los problemas comunes de código confuso ahora se dividen en dos categorías: la página JSP muestra código confuso chino y el código confuso de envío de formulario. 1) La página JSP muestra caracteres chinos confusos. Utilice el comando de página en el archivo JSP para especificar el tipo MIME del resultado de la respuesta, como 2) Cuando el formulario se envía con caracteres confusos (métodos post y Get), utilice la solicitud. Método .getParameter para obtener caracteres confusos. Esto se debe a que los procesos Tomcat al enviar parámetros, el valor predeterminado es iso-8859-1. Al enviar un formulario, get y post tienen diferentes problemas al procesar caracteres confusos.
(1) El procesamiento POST resuelve este problema escribiendo un filtro cuando la publicación envía el formulario. El filtro se llama para su procesamiento antes de que el usuario envíe los datos. Aquí puede cambiar la codificación de los parámetros: Java. código CharacterEncodingFilter.java:: publicclassCharacterEncodingFilter.java::CharacterEncodingFilter.java:publicclassCharacterEncodingFilterimplementsFilter{protectedStringencoding=null;publicvoidinit(FilterConfigfilterConfig) throwsServletException{this.encoding=filterConfig.getInitParameter("codificación");}publicvoidoFilter(ServletRequestrequest,ServletResponse respuesta, FilterChainchain) lanza IOException ,ServletException{request.setCharacterEncoding (codificación);response.CharacterEncodingFilterencodingGBKCharacterEncodingFilter/*(2) El método de adquisición maneja la publicación en Tomcat y el método de procesamiento de adquisición es diferente, por lo que el filtro no puede resolver el problema del código confuso obtenido, debe configurarse en otra parte. Abra el archivo server.xml en el directorio \conf, busque la sección de configuración del componente del conector de servicio con el puerto 8080 y agregue un atributo a este componente: URIEncoding = "GBK". El conector modificado está configurado en código Java. * Tenga en cuenta que reiniciar Tomcat después de la modificación funcionará. /************************************************ * ********* Uso del filtro*************************************** * *******************/3. El método de envío del formulario maneja caracteres confusos. Si usa get para enviar chino, los parámetros de la página de recepción también aparecerán confusos. El motivo de este código confuso también es el formato de codificación interno de Tomcat iso8859-1. Tomcat obtendrá la codificación de caracteres chinos de la codificación predeterminada iso8859-1, y la codificación se agregará a la URL, lo que provocará que los parámetros obtenidos por la página aceptada sean confusos /. Solución A. Utilice el primer método del ejemplo anterior para decodificar los caracteres recibidos y luego transcodificarlos. B. Obtenga la URL, envíela y realice la codificación iso8859-1 antes de ingresar la URL. Para afectar esta codificación, debe agregar la configuración del atributo useBodyEncodingForURI="true" en el nodo Conector del servidor 8") Establezca el formato de codificación para la codificación. Por lo tanto, codificará automáticamente en utf-8 y aceptará la página normalmente. Pero creo que el proceso de codificación real es que Tomcat debe volver a codificar de acuerdo con el URIEncoding="UTF-8" establecido en él, pero debido a que se codificó en utf-8, ya no cambiará. Si la codificación se obtiene de la URL, la página aceptada se decodificará según URIEncoding="UTF-8".