在 tomcat 下 請求引數的亂碼問題

2021-08-12 00:15:52 字數 1242 閱讀 7433

請求引數的亂碼問題

問題描述: 在通過request物件獲取請求引數時, 如果引數中有中文資料, 在獲取時就會出現亂碼, 其原因是由於瀏覽器傳送引數時(編碼時)使用的碼表 和 伺服器在結束資料時(解碼時)使用的碼表不一致造成的!

(1)  瀏覽器傳送資料時使用的碼表: 瀏覽器在傳送資料時使用的碼表取決於開啟頁面時使用的碼表, 即瀏覽器使用什麼編碼開啟頁面, 就會使用相同的編碼來傳送資料. 這裡使用的是utf-8這個碼表!

(2)  伺服器接收資料時使用的碼表: 伺服器在接收資料時預設使用iso8859-1來接收請求引數

解決方案:讓編碼時使用的碼表和解碼時使用的碼表保持一致即可!!!

可以通過手動編譯碼來解決亂碼!!

(1)  根據獲取到的亂碼字串, 反向編碼得回正確的二進位制資料

string username = request.getparameter("username");

//將亂碼逆向編碼轉回二進位制陣列

byte bytes = username.getbyte("iso8859-1");

(2)  將二進位制陣列查詢utf-8碼表轉成字串, 得回正確的資料

//手動編碼,將二進位制陣列轉成字元(查詢 utf-8 這個碼表)

username = new string(bytes,"utf-8");

如果傳送請求的方式是post提交, 還可以通過request提供的方法來解決亂碼:

request.setcharacterencoding(「utf-8」); 這行**是通知伺服器使用utf-8來接收請求實體內容中的資料.

由於post提交的引數剛好在請求實體內容中, 所以這行**可以解決post提交時產生亂碼問題.

/** 這行**是通知伺服器使用utf-8來接收請求實體

*  內容中的資料, 所以對post提交的亂碼起作用!

* 這行**必須放在任何獲取引數的**之前執行

*/request.setcharacterencoding("utf-8");

string username = request.getparameter("username");

但是由於get提交的引數在請求行中的請求資源路徑後面拼接著,不在請求實體內容中, 所有這行**對get提交產生的亂碼不會起作用!

TOMCAT 請求引數亂碼處理

通常,在使用spring mvc框架的應用程式中,為了解決中文引數亂碼的問題,都會新增如下過濾器配置 encodingfilter org.springframework.web.filter.characterencodingfilter encoding utf 8 forceencoding ...

請求引數的中文亂碼問題

1 出現 404錯誤 說明找不到資源,看看對映是否正確。出現異常 說明servlet 有問題。2 響應訊息 中文正確的顯示 響應訊息傳送回客戶端,響應頭欄位 用response.addheader 設定響應訊息的頭字段 html文件設定響應訊息頭欄位,用 meta 標籤,它有乙個屬性是 設定頭欄位。...

get請求引數中文亂碼

最近遇到的問題,記錄一下,就是get提交中文引數,後台取值是亂碼 使用各種方法,前面幾種方式雖然沒解決問題,但為以後轉碼提供思路,因此mark下 1.js中使用encodeuri 對請求url編碼 2.後台使用urldecoder指定解碼 3.request使用setcharacterencodin...