Quando um colega encontra problemas que codificam problemas, ele deseja criar um filtro de codificação de caracteres que resolva todo o site. A classe de filtro e a configuração são as seguintes:
Classe de filtro:
<span style = "font-size: 12px;"> pacote com.chaoxing.newspaper.web.filter; importar java.io.ioException; importar java.lang.reflect.invocationHandler; importar java.lang.reflect.method; import.port.LanG.refLeect.Preect.Proxy; javax.servlet.filterconfig; importar javax.servlet.servletexception; importar javax.servlet.servletrequest; import javax.servlet.sertleTesponse; import Javax.Servlet.http.httP.HtP.HTPS. javax.servlet.http.httpServletResponse; classe pública Classe CaracterencodingFilter implementa filtro {public void Dofilter (servletRequest req, servletResponse res, cadeia de filtragem) lança IoException, servleTexception {System.out.printLN ("Filter Excution"); Final HttpServletRequest Request = (httpServletRequest) req; HttpServletResponse Response = (httpServletResponse) res; // Resolute a solicitação de código ilegal chinesa.Setcharacterencoding ("UTF-8"); Response.Setcharacterencoding ("UTF-8"); Response.setContentType ("Texto/html; charset = utf-8"); Chain.Dofilter ((ServletRequest) proxy.NewProxyInstance (this.getClass (). getClassLoader (), request.getclass (). getInterfaces (), novo MethodEnMeNEn () {@SubstridePublic Object (object proxy, MethodEnEMeMeMe ([] args) {@substituição de objeto if (MethodName.equals ("getParameter")) {// Execute request.getParameter para obter o resultado da String = (String) Method.invoke (solicitação, args); System.Println (Valor+"||||"); ), res);} public void init (filterConfig fconfig) lança servletexception {System.out.println ("Inicialização do filtro");}@SubstridePublic void Destroy () {System.out.println ("filtro completo");} </span>Configuração do filtro:
<span style = "font-size: 12px;"> <!-Resolva filtros que são distorcidos em todo o site-> <filter> <filter-name> caractere-codificação </filter-name> <filter-class> com.xxx.web.filter.characterencodingFilter </class> </filter> <filter-Mapping> <nter-mapping.filter.characterencodingFilter </class> </filter> <filter-mapping> <url-pattern>/*</url-tattern> </filter-mapping> </span>
No entanto, quando o formulário de front-end envia o método, o que você recebe ainda está iluminado.
No começo, fiquei confuso sobre se o filtro foi escrito incorretamente e se o conjunto de codificação foi escrito incorretamente. No entanto, após o teste, não havia nada errado. O filtro estava em execução normalmente.
Finalmente, altere o valor.getByte ("ISO-8859-1", "UTF-8") para value.getbyte ("UTF-8", "UTF-8") e obtenha o valor em segundo plano, que não está mais ilegal. Finalmente, Baidu foi para
Dizem que o conjunto de codificação padrão do TomCat8 é UTF-8, e o conjunto de codificação padrão do TomCat8 antes do ISO-8859-1, e de repente percebi ...
Resumo: O conjunto de codificação padrão antes do TOMCAT7 e sua versão é ISO-8859-1, e o conjunto de caracteres padrão do TOMCAT8 já é UTF-8, por isso não precisa mais transcodificar o resultado do solicitação.getParameter () e não há necessidade de codificar a classe de filtro codificante.
A solução para o problema da codificação de caracteres de gravação de filtro inválida com base no tomcat8 é o conteúdo inteiro compartilhado pelo editor. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.