Cuando un colega se encuentra con problemas de codificación, quiere hacer un filtro de codificación de personajes que resuelva todo el sitio. La clase y la configuración de filtro son los siguientes:
Clase de filtro:
<span style = "font-size: 12px;"> paquete com.chaoxing.newspaper.web.filter; import java.io.ioexception; import java.lang.reflect.invocationHandler; import java.lang.reflect.method; import java.lang.reflect.proxy; import javax.servlet.servlet; import; javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletException; import javax.servlet.servletRequest; import javax.servlet.servletreSponse; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; public class CaracterencodingFilter Filter {public void dofilter (ServletRequest req, servletResponse Res, filterChain Chain) lanza ioexception, servletException {system.out.println ("ejecución de filtros"); Solicitud final httpservletrequest = (httpservletRequest) req; HttpservletResponse respuesta = (httpservletResponse) res; // resuelva la solicitud de código de confusión chino. SetcharacterEncoding ("UTF-8"); respuesta.setcharacterEncoding ("UTF-8"); respuesta.setContentType ("text/html; charset = utf-8"); Chain.dofilter ((ServLetRequest) proxy.newproxyInstance (this.getClass (). getClassLoader (), request.getClass (). getInterfaces (), new InvocationHandler () {@overRidePublic Object Invoke (Object Proxy, método de método, objeto [] args) lanza {String MethodeMe Methode = Method. if (MethodName.equals ("GetParameter")) {// Ejecutar request.getParameter para obtener el resultado de la cadena de string = (String) Method.invoke (request, args); System.out.println (valor+"|||||"); res);} public void init (filterconfig fconfig) lanza ServletException {System.out.println ("Inicialización de filtro");}@overRidePublic Void destruye () {System.out.println ("Filter Complete");}} </span>Configuración del filtro:
<span style = "font-size: 12px;"> <!-Resolver filtros que están confusos en todo el sitio-> <filter> <filter-name> caracterescoding </filter-name> <filter-class> com.xxx.web.filter.characteriCodingfilter </filter-class> </filter> <filter-mapping> <filter-name> caracterescoding </filter-name-name <//filtro> <Url-Pattern>/*</URL-Pattern> </filter-mapping> </span>
Sin embargo, cuando el formulario front-end presenta el método, lo que obtienes todavía está confuso.
Al principio, estaba confundido sobre si el filtro se escribió incorrectamente y si el conjunto de codificación se escribió incorrectamente. Sin embargo, después de la prueba, no había nada de malo. El filtro se estaba ejecutando normalmente.
Finalmente, cambie value.getByte ("ISO-8859-1", "UTF-8") a value.getByte ("UTF-8", "UTF-8") y obtenga el valor en el fondo, que ya no está confuso. Finalmente, Baidu fue a
Se dice que el conjunto de codificación predeterminado de TOMCAT8 es UTF-8, y el conjunto de codificación predeterminado de TOMCAT8 antes es ISO-8859-1, y de repente me di cuenta ...
Resumen: el conjunto de codificación predeterminado antes de TOMCAT7 y su versión es ISO-8859-1, y el conjunto de caracteres predeterminado de TOMCAT8 ya es UTF-8, por lo que ya no necesita transcodificar el resultado de request.getParameter (), y no es necesario codificar la clase de filtro de codificación.
La solución al problema de la codificación de caracteres de escritura de filtro no válido basada en TOMCAT8 es todo el contenido compartido por el editor. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.