天天看點

get、post請求參數亂碼解決方法

原文見: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方法進行重新封裝,加入處理亂碼問題的方法。

get、post請求參數亂碼解決方法
get、post請求參數亂碼解決方法
get、post請求參數亂碼解決方法
get、post請求參數亂碼解決方法

web.xml配置

get、post請求參數亂碼解決方法
get、post請求參數亂碼解決方法

這樣post和get亂碼的問題也就解決了。

三、簡單方法

如果覺得上面的方式太繁瑣,也可以通過修改 tomcat 的 server.xml 配置檔案:

改成

注: 如果是ajax發起的get請求中文依然會亂碼,這時候需要把 useBodyEncodingForURI=”true” 改為 URIEncoding=”UTF-8” 。

推薦參考文章 :https://www.cnblogs.com/binye-typing/p/6281627.html

繼續閱讀