Recientemente, utilizando AJAX para solicitar antecedentes de SpringMVC para consultar la base de datos MySQL, la página muestra el código chino confuso
Inicialmente configurado en mybatis de la siguiente manera
<select id = "QUERYCONTENTBYID" resultType = "java.lang.string" parametertype = "string"> Seleccione texto de News Where id =#{o} </select>
El campo de texto de las noticias de la tabla es de tipo blob
El valor de texto que se encuentra de esta manera siempre se muestra en código confuso en la consola.
Después de eso, Google buscó el contenido relacionado con el contenido relacionado de resultado = blob sin éxito, por lo que lo cambió a resultType = "java.util.map", y
byte [] b = (byte []) map.get ("text"); cadena s = nueva cadena (b, "utf-8");
Imprima la salida S, y el texto chino se muestra normalmente en este momento, pero la pantalla de la página todavía está confusa.
Por lo tanto, es una solicitud de AJAX, por lo tanto, verifique la información del encabezado de respuesta y encuentre lo siguiente
Contenido-typetext/html; charset = iso-8859-1
Dado que la base de datos está codificada de manera uniforme como UTF-8, la información del encabezado de respuesta se modifica
@RequestMapping (value = "/QueryContentById", método = requestmethod.get, produce = "text/sencillo; charset = utf-8") public @ResponseBody String QueryContentById (@RequestParam ("ID") String ID) arroja sqLException, no supuestamente la concepción {MAP MAP = (MAP) NDRService.QueryContentById (id); ;}
Veamos otro problema de ejemplo
1. El controlador de SpringMVC tiene código confuso:
(1) Agregue un filtro de conjunto de caracteres a Web.xml:
Copie el código de la siguiente manera: <!-Filtro de conjunto de caracteres de primavera-> <filter> <filter-name> springencodingfilter </filter-name> <filter-class> org.springframework.web.filter.character Codingfilter </filter </filter -Class> <init-param> <amamname> codificación </amamname> <amam-value> utf-8 </param-value> </init-param> <init-param> <amamname> ForceEncoding </param-name> <amam-value> true </amam-value> </it-param> </sille> <filter-mapping> <filter-name> springEncodingFilter </filtre-name> <url-p attern>/*</url-Pattern> </filter-mapping>
(2) Modificar en JSP y otras páginas: Charset = UTF-8 "y PageEncoding =" UTF-8 "
2. El controlador lee el chino correcto, pero después de guardarlo en la base de datos, se convierte en "??"
(1) Modifique la conexión de la base de datos jdbc_url = jdbc: mysql: // localhost: 3306/mybatistest? UseUnicode = yes & caracterSencoding = utf8 ("&": medios "&" en el archivo XML)
(2) Modifique el conjunto de caracteres de la base de datos a UTF-8: Abra my.ini en el directorio raíz de mysql (mysql5.6 es my-default.ini, y copie como my.ini), y agrégalo en el Ubicación específica a continuación (o modificado):
La copia del código es la siguiente: [mySQLD] caracteres-set-server = utf8 [cliente] default-caracteres-set = UTF8 [mySQL] default-caracteres-set = UTF8
No hay problema con configurarlo de mi lado.
Resumen:
Por lo general, el problema del código de confusión chino es causado por la configuración de codificación de caracteres incorrecto. Finalmente se resolvió el problema.