Recentemente, usando o AJAX para solicitar um plano de fundo Springmvc para consultar o banco de dados MySQL, a página mostra o código chinês iluminado
Inicialmente configurado em mybatis da seguinte maneira
<select id = "QueryContentById" resultType = "java.lang.string" parameterType = "string"> selecione Text FRO
O campo de texto da tabela notícia é do tipo Blob
O valor do texto encontrado dessa maneira é sempre exibido em código ilegal no console.
Depois disso, o Google pesquisou o conteúdo relevante do resultado do resultado = BLOB sem sucesso, por isso mudou para resultype = "java.util.map" e
byte [] b = (byte []) map.get ("text"); string s = new String (b, "utf-8");
Imprima s e o texto chinês é exibido normalmente neste momento, mas a exibição da página ainda está iluminada.
Portanto, é solicitação de Ajax, então verifique as informações do cabeçalho da resposta e encontre o seguinte
Tipo de conteúdo/html; charset = ISO-8859-1
Como o banco de dados é codificado uniformemente como UTF-8, as informações do cabeçalho da resposta são modificadas
@RequestMapping (value = "/QueryContentById", método = requestMethod.get, produz = "text/plana; charset = utf-8") public @Responsebod {Mapa mapa = (mapa) NDRService.QueryContentById (ID); ;}
Vejamos outro exemplo de problema
1. O controlador da Springmvc recebe código ilegal:
(1) Adicione um filtro de conjunto de caracteres ao web.xml:
Copie o código da seguinte forma: <!-Spring Character Set filtro-> <filter> <filter-name> springncodingfilter </filter-name> <filter-class> org.springframework.web.filter.character codingfilter </filtro -Class> <iit-param> <amam-name> codificação </amam-name> <amam-value> utf-8 </param-value> </irit-param> <iit-param> <amam-name> Forcencoding </amam-name> <amam-value> true </param-value> </irit-param> </ftruter> <filter-Mapping> <filter-name> SpringEncodingFilter </filter-Name> <url-p attern>/*</url-tattern> </filter-mapping>
(2) Modificar no JSP e em outras páginas: charset = utf-8 "e PageEncoding =" UTF-8 "
2. O controlador lê os chineses corretos, mas depois de salvá -lo no banco de dados, ele se torna "??"
(1) Modifique a conexão com o banco de dados jdbc_url = jdbc: mysql: // localhost: 3306/mybatistest? Useunicode = sim & caracteryncoding = utf8 ("&": significa "&" no arquivo xml)
(2) Modifique o conjunto de caracteres do banco de dados para UTF-8: Abra My.ini no diretório raiz de MySQL (MySQL5.6 é meu My-Default.ini e copie-o como My.ini) e adicione-o no Localização específica abaixo (ou modificada):
A cópia de código é a seguinte: [mysqld] personagem-severver = utf8 [cliente]
Não há problema em defini -lo do meu lado.
Resumo:
Geralmente, o problema do código ilegal chinês é causado por configurações incorretas de codificação de caracteres. Finalmente, o problema foi resolvido.