Wenn ein Kollege auf Codierungsprobleme stößt, möchte er einen Charakter -Codierungsfilter erstellen, der die gesamte Site löst. Die Filterklasse und Konfiguration lauten wie folgt:
Filterklasse:
<span style = "font-size: 12px;"> paket com.chaoxing.newspaper.web.filter; import java.io.ioxception; import Java.lang.reflect.invocationHandler; importieren java.lang.refect.method; javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletException; import javax.servlet.servletrequest; import javax javax.servlet.http.httpServletResponse; öffentliche Klasse charakteritätsgerichtete filter filter {public void dofilter (servletRequest req, servletresponse res, filterchain kette) löst IOException, servletException {system.outln aus ("Filter Execution"); endgültige httpServletRequest Request = (httpServletRequest) req; HttpServletResponse response = (httpServletResponse) res; // Entschlossene chinesische Verstürmungscode-Anforderung. response.setcharactercoding ("utf-8"); Antwort.SetContentType ("text/html; charSet = utf-8"); chain.doFilter((ServletRequest) Proxy.newProxyInstance(this.getClass().getClassLoader(), request.getClass().getInterfaces(), new InvocationHandler(){@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {String methodname = method.getName(); //Get the current method if (methodName.equals ("getParameter") {// Request.GetParameter, um den Ergebnis -String -Wert zu erhalten. System.out.println (Wert+"||||"); res);} public void init (filterconfig fconfig) löscht servletException {System.out.println ("Filterinitialisierung");}@oversidepublic void DistreFilterkonfiguration:
<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> charakteritätserklärung </filter-name> <URL-Muster>/*</url-pattern> </filter-mapping> </span>
Wenn das Front-End-Formular jedoch die Methode erhalten, ist das, was Sie erhalten, immer noch verstümmelt.
Am Anfang war ich verwirrt darüber, ob der Filter falsch geschrieben wurde und ob der Codierungssatz falsch geschrieben wurde. Nach dem Test war jedoch nichts falsch. Der Filter lief normal.
Schließlich ändern Sie Value.getByte ("ISO-8859-1", "UTF-8") zu Value.getByte ("UTF-8", "UTF-8") und erhalten Sie den Wert im Hintergrund, der nicht mehr verstümmelt ist. Schließlich ging Baidu zu
Es wird gesagt, dass der Standard-Codierungssatz von Tomcat8 UTF-8 und der Standard-Codierungssatz von Tomcat8 zuvor ISO-8859-1 ist, und ich merkte plötzlich ...
Zusammenfassung: Der Standard-Codierungs-Set vor Tomcat7 und der Version ist ISO-8859-1, und der Standardzeichen von Tomcat8 ist bereits UTF-8, sodass das Ergebnis von Request.GetParameter () nicht mehr transcode.
Die Lösung für das Problem des ungültigen Filterfilters Schreiben von Charaktercodierung basierend auf Tomcat8 ist der gesamte Inhalt, der vom Editor geteilt wird. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.