Когда коллега сталкивается с проблемами кодирования, он хочет сделать фильтр кодирования персонажа, который решает весь сайт. Класс фильтров и конфигурация следующие:
Класс фильтра:
<span style = "font-size: 12px;"> package com.chaoxing.newspaper.web.filter; import java.io.ioexception; import java.lang.reflect.invocationHandler; импорт java.lang.reflect.method; импорт java.lang.reflect.proxy. javax.servlet.filterchain; import javax.servlet.filterConfig; импорт javax.servlet.servletexception; import javax.servlet.servletrequest; импорт javax.servlet.servletresponse; import javax.servlet.http.httpservlectrequest; javax.servlet.http.httpservletresponse; public class haremencodingfilter реализует фильтр {public void dofilter (ServletRequest req, servletresponse, цепочка FilterChain). Окончательный httpservletrequest request = (httpservletrequest) req; Httpservletresponse response = (httpservletresponse) res; // Решить китайский искаженный запрос кода.setcharacterencoding ("UTF-8"); response.setcharacterencoding ("UTF-8"); response.setContentType ("text/html; charset = utf-8"); chain.dofilter (((ServletRequest) proxy.newProxyInstance (this.getClass (). getClassloader (), request.getClass (). getInterfaces (), new vocationHandler () {@overridePublic объекта Invoke (Object Proxy, метод метода, объект [] args) throwable throwable {string methodme = get -methondame = get -methondame = get /get -method -get /get -methodme. if (methodname.equals ("getParameter") {// execute request.getParamet System.out.println (Value+"||||"); res);} public void init (filterConfig fconfig) Throws ServletException {System.out.println ("инициализация фильтра");}@overidepublic void destress () {System.out.println ("Filter overde");}} </span>Конфигурация фильтра:
<span style="font-size:12px;"> <!--Solve filters that are garbled on the entire site --> <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>com.XXX.web.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncoding</filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> </span>
Тем не менее, когда передняя форма подчиняется, метод получен, то, что вы получаете, все еще искажено.
Вначале я был замешан о том, был ли фильтр написан неправильно, и был ли набор кодирования написан неправильно. Однако после тестирования не было ничего плохого. Фильтр работал нормально.
Наконец, изменение value.getbyte ("iso-8859-1", "utf-8") на value.getbyte ("UTF-8", "UTF-8") и получите значение в фоновом режиме, которое больше не искажено. Наконец, Байду пошел в
Говорят, что набор кодирования по умолчанию Tomcat8-UTF-8, а набор кодирования по умолчанию Tomcat8 до ISO-8859-1, и я внезапно понял ...
Резюме: Кодирование по умолчанию, установленное перед Tomcat7 и его версией ISO-8859-1, а набор символов по умолчанию Tomcat8 уже является UTF-8, поэтому ему больше не нужно транслировать результат request.getParameter (), и нет необходимости кодировать класс фильтрации кодирования.
Решением проблемы неверного фильтра «Кодирование символов», основанное на Tomcat8, является весь контент, разделенный редактором. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.