El código de basura es un dolor de cabeza. Este artículo presenta una solución al problema de los chinos confusos en MVC de primavera, que es el siguiente:
1: La solución para el código confuso después del controlador de envío del formulario obtiene parámetros chinos
Nota: La codificación de la página JSP está configurada en UTF-8
El método de envío del formulario debe estar post. El filtro de codificación de primavera bajo el método get no tiene ningún efecto
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "UTF-8"%> <Form Action = "$ {CTX}/user/adduser" name = "userform" método = "post">Modifique Web.xml y agregue filtros de codificación de la siguiente manera (tenga en cuenta que debe establecer el valor del parámetro ForceEncoding en verdadero)
<Trime> <Sterry-Name> CaracterSencodingFilter </filter-Name> <Slast-Class> orgspringFrameWorkWebFilterCaracterEncodingFilter </filter-class> <Init-param> <amamname> Encoding </param-name> <amam-value> utf-8 </param-value> </ init-param> <init-param> <amamname> ForceEncoding </amamname> <amam-value> true </amam-value> </it-param> </sille> <filter-mapping> <filter-name> CaracterEndingFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>>
Nota: ¿La codificación de la base de datos admite chino?
¿Son correctos las tablas de la base de datos y los campos de tabla?
Modifique la configuración de parámetros de la base de datos de conexión de configuración:
<propiedad name = "url" value = "jdbc: mysql: // localhost: 3306/dbname? UseUnicode = true & caracterSencoding = UTF-8"> </propianas>
El primer caso:
Ingrese la página JSP en chino e ingrese el código confuso del controlador. En este momento, lo que necesita establecer es agregar un filtro codificado (filtro) para unificar la codificación en UTF-8. El código es el siguiente:
Archivo de configuración web.xml:
<filter> <filter-name> CaracterSencodingFilter </filter-name> <filter-class> orgspringFrameWorkWebFilterCharacterEncodingFilter </filter-class> <it-param> <amamname> codificación </par Am-Name> <Param-Value> UTF-8 </Param-Value> </it-param> </siltro> <filter-mapping> <filter-name> caracteresCodingFilter </filter-name> <url-pattern>/*</ url-Pattern> </filtre-mapping>>
Cabe señalar aquí que es mejor colocar este código al comienzo de WebXML, porque hay un orden de intercepción, y si se coloca en la parte posterior, es fácil bloquearlo.
El segundo caso:
Base de datos Datos chinos, página JSP Muestra código confuso (no código confuso en sentido estricto, pero se presenta en forma de un signo de interrogación)
Dado que la interacción de datos entre nuestro frente y el backend usa datos JSON, no sé mucho sobre la razón de esta situación. Nunca antes lo he encontrado. Solo puedo culparme por haber hecho muy pocos proyectos, y no es difícil resolverlo. Solo necesito establecer el formato de codificación al convertir JSON. El código es el siguiente:
RespuestaSetContentType ("Aplicación/JSON; Charset = UTF-8"); // Evitar la transmisión de datos desde el código confusiónSi escribe esta oración, no volverá a tener códigos confusos.
La tercera situación:
La página también es correcta para pasarlo al controlador, pero después de guardarla en la base de datos, se volverá confuso (no es un código estricto confuso, al igual que el anterior, hay todos los signos de interrogación)
Este problema me ha preocupado por un tiempo. Comencé a sentir que el formato de codificación de la base de datos es incorrecto. Todavía no es posible recrear la base de datos con el formato de codificación de UTF-8. Finalmente, sentí que era un problema con JBoss. Nuestro servidor usa JBoss. Busqué en Internet y agregué el formato de codificación al conectarme a la fuente de datos. El código es el siguiente:
<DataSource jta = "true" jndi-name = "java: jBoss/DataSources/JCMysqlds" Pool-Name = "JCMysqlds" habilitado = "True" Use-java-context = "true"> <nection-Url> jdbc: mysql: // 46/itoo_basic_basic? UseUnicode = true y caracterescoding = utf-8 </exition-url> <driver> mysql </driver> <ocir> <pref Ill> false </ prefill> <suse-strict-min> false </strict-min> <flush-strategy> fallingconnectionOnly </flush-strategy> </proud> <security> <sereurname> root </ser-name> <pass <a <a href = "http: // wwwitnet/edu/ebg/" target = "_ blank"> word </a>> 123456 </pass <a href = "http: // wwwitnet/edu/ebg/" target = "_ blank"> Word </a>> </seguridad> </datasource>
1. Página confusa
Las páginas son relativamente fáciles de resolver, y a menudo configuran conjuntos de caracteres relevantes en la página JSP o la página HTML correspondiente. como
%@page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "UTF-8"%
2. Valor de transferencia Código de conflicto
Durante el proceso de transmisión de valor, los códigos confusos también aparecen con frecuencia. Sin mencionar qué escenario es, las soluciones comúnmente utilizadas incluyen los siguientes filtros especificados
< <Amam-Value> UTF-8 </param-value> </it-param> <Init-param> <Init-param> <amamname> ForceEncoding </param-name> <amam-value> true </amam-value> </itparam> </filter>
Establecer Conjunto de caracteres de solicitud
A menudo, después de pasar desde la recepción al controlador o acción correspondiente, aparece el código confuso. Mi idea general es imprimir el conjunto de caracteres predeterminado de la solicitud en sí misma.
SystemOutPrintln (requestgetCharacterEncoding ());
Luego, de acuerdo con la situación, si el conjunto de caracteres requerido no está impreso, establezca el conjunto de caracteres correspondiente.
requestSetcharacterEncoding ("UTF-8");Por supuesto, algunas situaciones no pueden resolverse. Puedes usar lo siguiente
String Str = Newstring ((requestGetParameter ("BigQuestionTypename")) GetBytes ("ISO-8859-1"), "UTF-8")3. Guarde el código de la base de datos.
Esto es relativamente complicado. Aquí, LZ usa MySQL, y MySQL se usa para introducir cómo resolver este problema confuso
Como todos sabemos, ya sea puro JDBC, Hibernate o JPA, es mejor usarlo en la parte inferior. De hecho, es esencialmente JDBC, y el marco correspondiente solo se encapsula de manera relevante. Entonces, no importa qué tipo de tecnología sea, usará la URL conectada a la base de datos. Por lo tanto, la URL debe verificarse primero
url
La situación estándar agregará la configuración del conjunto de caracteres correspondiente después de la situación correspondiente, de la siguiente manera
jdbcurl = jdbc: mysql: /// itcastoa? UseUnicode = true & caracterSencoding = UTF-8
Como se mencionó anteriormente, UseUnicode debe conectarse al conjunto de caracteres en la base de datos, ¿y qué es esto? Este es un problema, en XML y es el carácter de escape de &. Si usa XML para configurar la configuración de conexión de base de datos correspondiente, ese es el problema. Pero si usa ** propiedades, habrá un problema y debe eliminar el amplificador. De hecho, esta es la experiencia de que LZ tiene una cabeza sangrienta.
base de datos
El problema aquí también es relativamente difícil de tratar. Inicie sesión en la base de datos
Ver formato de codificación de base de datos
<img src = "http: // www2ctocom/uploadfile/collfiles/20150302/png" 7plu ninja htahle ninja: 1opentablaug: Sun. 1 día SQL> "=" ">
Puede ver si el conjunto de caracteres del servidor es Latin1. Aquí necesitamos hablar sobre los conjuntos de personajes comúnmente utilizados.
Para la paz y la prosperidad del mundo, la organización ISO ha designado una solución de conjunto de caracteres Unicode. La codificación Unicode es un puente de comunicación mutua y conversión entre diferentes codificaciones, incluido el binario de 32 bits, por lo que puede acomodar caracteres al poder de 2, lo cual es suficiente para la vida. Unicode se divide en tres soluciones de acuerdo con diferentes necesidades.
UTF8: Se utiliza para resolver la codificación que aparece en diferentes idiomas internacionalmente. Para el inglés, se utilizan 8 dígitos y para chino, se usan 3 dígitos. Se puede mostrar en cualquier navegador que admita el conjunto de caracteres UTF9 sin procesamiento adicional.
Los otros dos son UTF16 y 32, que no se editarán aquí. Puede verificarlo usted mismo, pero aún se debe a la comodidad del almacenamiento y uso para decidir cuál usar.
De acuerdo, el relativamente familiar es GBK, comúnmente conocido como el Código Nacional Estándar, formulado por los estándares nacionales chinos, y solo contiene caracteres chinos. Entonces, en comparación con los dos, UTF8 es una mejor compatibilidad, pero tiene una mayor capacidad de almacenamiento.
Vuelve pronto, aproximadamente, si carga el conjunto de personajes, o vuelve y resuelve el problema primero. Por lo tanto, está bien usar GBK o UTF8 aquí. Pero Latin1 definitivamente no es posible, aquí está establecido principalmente por dicho comando
El servidor, la base de datos y las piezas de la tabla de datos se establecen por separado, y se debe establecer la codificación de conexión. La configuración de codificación de conexión es la siguiente:
mysql> set caracteres_set_client = 'gbk'; mysql> set caracteres_set_connection = 'gbk'mysql> set caracteres_set_results =' gbk '
Configure la codificación y puede insertar con éxito chino a continuación. De hecho, se puede resolver en una oración.
Comandos de uso común
Ver formato de codificación de base de datos
Mostrar variables como 'caracteres_set_%';
Ver la creación de tablas en la base de datos
Mostrar Crear tabla tableName;
Establecer formato de codificación de base de datos
setnames 'gbk';
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.