Ketika seorang kolega mengalami masalah pengkodean, ia ingin membuat filter pengkodean karakter yang memecahkan seluruh situs. Kelas filter dan konfigurasi adalah sebagai berikut:
Kelas Filter:
<span style = "font-size: 12px;"> package com.chaoxing.newspaper.web.filter; impor java.io.ioException; impor java.lang.reflect.invocationhandler; impor java.lang.reflect.method; impor java.lang.reflect; javax.servlet.filterchain; import javax.servlet.filterconfig; impor javax.servlet.servletException; impor javax.servlet.servletrequest; impor javax.servlet.servletsvese; impor javax.servlet.http.htp.htpress; javax.servlet.http.httpservletResponse; Kelas Publik KaraktereCodingFilter Menerapkan Filter {public void dofilter (ServletRequest Req, ServletResponse res, rantai filterchain) Lempar IOOException, ServletException {System.out.println ("Filter"; permintaan httpservletRequest terakhir = (httpservletRequest) req; Respons httpservletResponse = (httpservletResponse) res; // tegahkan permintaan kode yang kacau Cina. Setcharacterencoding ("UTF-8"); response.setcharacterencoding ("UTF-8"); response.setContentType ("Teks/html; charset = utf-8"); rantai.dofilter ((servletRequest) proxy.newproxyInstance (this.getClass (). getClassLoader (), request.getClass (). getInterfaces (), new InvocationHandler () {@overridepublic objek Invoke (objek proxy, metode metode, objek [] args) throwable {methody) METODE (METODE) METODE (METODE METODE, METODE, METODE Objoke, METODE, METODE, METODE, METODE METODE (] if (methodname.equals ("getParameter")) {// Execute request.getParameter untuk mendapatkan nilai string hasil = (string) method.invoke (request, args); System.out.println (nilai+"||||"); res);} public void init (filterconfig fconfig) melempar servletException {System.out.println ("Filter Inisialisasi");}@overridepublic void destroy () {System.out.println ("Filter Lengkap");} </span>Konfigurasi Filter:
<span style = "font-size: 12px;"> <!-memecahkan filter yang kacau di seluruh situs-> <nilter> <nilter-name> karakterEncoding </tiler-name> <nilter-class> com.xxx.web.filter.characterencodingfilter </filter-classis> </filter> <filter-papping-name.characterenCodingFilter </filter-classic> </filter> <nilter-papping> <rerl-pola>/*</url-pola> </filter-mapping> </span>
Namun, ketika formulir front-end mengirimkan metode ini, apa yang Anda dapatkan masih kacau.
Pada awalnya, saya bingung tentang apakah filter itu ditulis secara tidak benar dan apakah set pengkodean ditulis secara tidak benar. Namun, setelah pengujian, tidak ada yang salah. Filter berjalan secara normal.
Akhirnya, ubah value.getByte ("iso-8859-1", "UTF-8") menjadi value.getByte ("UTF-8", "UTF-8") dan dapatkan nilainya di latar belakang, yang tidak lagi kacau. Akhirnya, Baidu pergi ke
Dikatakan bahwa set pengkodean default Tomcat8 adalah UTF-8, dan set encoding default TomCat8 sebelumnya adalah ISO-8859-1, dan tiba-tiba saya menyadari ...
Ringkasan: Set pengkodean default sebelum TomCat7 dan versinya adalah ISO-8859-1, dan set karakter default Tomcat8 sudah UTF-8, sehingga tidak perlu lagi mentranskode hasil dari permintaan.getParameter (), dan tidak perlu mengkode kelas filter pengkodean.
Solusi untuk masalah pengkodean karakter penulisan filter filter yang tidak valid berdasarkan TomCat8 adalah seluruh konten yang dibagikan oleh editor. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.