Al implementar un programa de servicios web hoy, el servlet que obtiene datos de la página encontró un problema confuso. En el servlet, agregué el texto request.setCharacterEncoding("GB2312");
Encuentre información en línea de la siguiente manera: JAVA es codificación Unicode, primero la convierte a ISO8859-1 y luego la convierte a GBK o GB2312.
código java
¡Esto es chino!
Existe una forma más sencilla, que consiste en configurar la conversión de codificación directamente en el servidor. Se utiliza TOMCAT5.0.28.
Busque el archivo SERVER.XML en el directorio ../Tomcat 5.0/conf, ábralo con WordPad y configúrelo de la siguiente manera:
Simplemente agregue un atributo dentro, URIEncoding="GBK"
Se pasa la prueba y se completa. Luego, ¿qué papel desempeña la oración request.setCharacterEncoding("GB2312")? Si no puede resolver el problema complicado, ¿qué papel desempeñaremos? La información se organiza de la siguiente manera:
(1) La página JSP está en chino, pero cuando la miras, está confusa:
La solución es codificar la página JSP. Debido al problema de codificación cuando JSP se convierte en un archivo Java, algunos servidores usan ISO-8859-1 de forma predeterminada. Si se ingresa chino directamente en un JSP, JSP lo trata como ISO8859. 1 es definitivamente un problema. Podemos confirmarlo mirando el archivo intermedio de Java generado por Jasper.
(2) Cuando se utiliza el objeto Solicitud para obtener el código de caracteres chinos enviado por el cliente, aparecerán caracteres confusos:
La solución es configurar un filtro, que es un filtro Servelet. El código es el siguiente:
request.setCharacterEncoding("GBK");
// Pasa el control al siguiente filtro
chain.doFilter (solicitud, respuesta);
}
<asignación-de-filtros></asignación-de-filtros>
<filter-name></filter-name>Establecer codificación de caracteres
<patrón-url></patrón-url>/*
También existe el procesamiento de información que contiene caracteres chinos. El código de procesamiento es:
La solución es:
1) Abra el archivo server.xml de Tomcat, busque el bloque y agregue la siguiente línea:
Codificación URI = "GBK"
El completo debe ser el siguiente:
(4) Hay caracteres chinos en la página JSP y caracteres chinos en los botones, pero aparecen caracteres confusos al ver la página a través del servidor:
La solución es: primero, el texto del mensaje traducido no debe incluirse directamente en el archivo JSP, sino que debe obtenerse del paquete de recursos a través de la etiqueta <bean:message>. Debe colocar su texto chino en el archivo Application.properties. Este archivo se encuentra en WEB-INF/classes/*. Por ejemplo, si tengo dos etiquetas para nombre y edad en la página, primero necesito crear una aplicación. propiedades. El contenido interior debe ser nombre="nombre" age = "age", luego coloco este archivo en WEB-INF/classes/properties/, luego lo codifico de acuerdo con el archivo Application.properties y creo un archivo de recursos chino, asumiendo que el nombre es Application_cn.properties. El comando nativo2ascii se proporciona en el JDK, que puede realizar la conversión de codificación de caracteres. Busque el directorio donde colocó el archivo Application.properties en el entorno DOS Ejecute el comando en el entorno DOS. Se generará el archivo de recursos chino Application_cn.properties codificado en GBK: Native2ascii ?codificación gbk Application.properties Application_cn.properties. El comando anterior se generará en el futuro el archivo Application_cn.properties con el siguiente contenido: nombre=u59d3u540d. age=u5e74u9f84, configurado en Struts-config.xml: <message-resourcesparameter="properties.Application_cn"></message-resources>. En este punto, básicamente está hecho más de la mitad. Luego debe escribir en la página JSP. Para la etiqueta del nombre, debe escribir <bean:message key=""name"">. En la página aparecerá el nombre chino, lo mismo ocurre con la edad y los caracteres chinos en el botón también se procesan de la misma manera.
(5) El código escrito en la base de datos está confuso:
Solución: configure un filtro, que es un filtro Servelet. El código es el mismo que la segunda vez.
Si está conectado directamente a la base de datos a través de JDBC, el código de configuración es el siguiente: jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK, para garantizar que el código en la base de datos no esté confuso.
Si está vinculando a través de la fuente de datos, no puede escribirlo así. Primero, debe escribirlo en el archivo de configuración. El lugar para configurar la fuente de datos en Tomcat 5.0.19 es C:Tomcat 5.0confCatalinalocalhost. El proyecto es taller y el directorio donde se encuentra está en webapp. El archivo de configuración de taller.xml es el siguiente:
<recurso nombre="jdbc/WorkshopDB"></recurso>auth="Contenedor"
tipo="javax.sql.DataSource" />
<resourceparams nombre="jdbc/WorkshopDB"></resourceparams>
<parámetro></parámetro>
<nombre></nombre>fábrica
<valor></valor>org.apache.commons.dbcp.BasicDataSourceFactory
<parámetro></parámetro>
<nombre></nombre>maxActivo
<valor></valor>100
<parámetro></parámetro>
<nombre></nombre>maxIdle
<valor></valor>30
<parámetro></parámetro>
<nombre></nombre>maxEsperar
<valor></valor>10000
<parámetro></parámetro>
<nombre></nombre>nombre de usuario
<valor></valor>raíz
<parámetro></parámetro>
<nombre></nombre>contraseña
<valor></valor>
<parámetro></parámetro>
<nombre></nombre>nombre de clase del controlador
<valor></valor>com.mysql.jdbc.Driver
<parámetro></parámetro>
<nombre></nombre>url
<valor></valor>
Preste especial atención a los lugares en negrita. Es diferente del enlace directo a JDBC. Si lo configura correctamente, cuando ingrese chino, será chino en la base de datos. Una cosa a tener en cuenta es que cuando muestre la página de datos. También necesita esta línea de código. Cabe señalar que algunos empleados de recepción usan Dreamver para escribir el código. Cuando escriben un formulario, lo cambian a un jsp. Hay una cosa a la que prestar atención, y es el método de envío de Action. Solicite y debe enviarla, porque hay dos métodos de envío JSP: POST y GET, pero el código enviado por estos dos métodos sigue siendo muy diferente en términos de codificación. Esto se explica más adelante. </bean:mensaje>< /bean:mensaje>