原文見:https://www.cnblogs.com/ajjava/p/8079933.html
在實際的項目中我們會遇見中文亂碼的問題,這個問題是很惡心的事,是以我在這裡提供了一些解決中文亂碼的方法,希望能給大家一些幫助。
一、單獨參數亂碼
?
1
<code>post請求:request.setCharacterEncoding(</code>
<code>"utf-8"</code>
<code>);</code>
當用戶端通過GET請求發送資料給伺服器時,使用request.getParameter()擷取的資料是被伺服器誤認為ISO-8859-1編碼的,也就是說用戶端發送過來的資料無論是UTF-8還是GBK,伺服器都認為是ISO-8859-1,這就說明我們需要在使用request.getParameter()擷取資料後,再轉發成正确的編碼。例如用戶端以UTF-8發送的資料,使用如下轉碼方式:
2
<code>get請求:String name =</code>
<code>"擷取參數内容"</code>
<code>;</code>
<code> name =</code>
<code>new</code>
<code>String(name.getBytes(</code>
<code>"iso-8859-1"</code>
<code>),</code>
<code>);</code>
二、整個項目亂碼
那麼對于整個項目怎麼統一解決亂碼問題呢?這裡我們利用攔截器和裝飾的方法解決這個問題
我們利用裝飾者模式将HttpServletRequest中的getParameter方法進行重新封裝,加入處理亂碼問題的方法。




web.xml配置


這樣post和get亂碼的問題也就解決了。
三、簡單方法
如果覺得上面的方式太繁瑣,也可以通過修改 tomcat 的 server.xml 配置檔案:
改成
注: 如果是ajax發起的get請求中文依然會亂碼,這時候需要把 useBodyEncodingForURI=”true” 改為 URIEncoding=”UTF-8” 。
推薦參考文章 :https://www.cnblogs.com/binye-typing/p/6281627.html