1. 程式人生 > >訪問Tomcat7及以下版本時(HttpServeltRequest請求時)的中文亂碼解決問題

訪問Tomcat7及以下版本時(HttpServeltRequest請求時)的中文亂碼解決問題

訪問Tomcat7及以下版本時(HttpServeltRequest請求時)的中文亂碼解決問題

  總的來說,亂碼的解決方式是根據請求方式的不同而去選擇取用何種方式解決棘手的亂碼問題的。

  先說post方式提交到Tomcat伺服器,Tomcat解析時出現的亂碼問題,下面我們看一下請求時的流程以及程式碼實現:

這裡寫圖片描述
這裡寫圖片描述

上面是請求是的頁面,裡面傳遞的是中文,用的form表單提交方式為method=”post”。

提交到指定的servlet去執行自身的service(HttpServletRequest request,HttpServletResponse response){
}方法,其方法體內部實現方式如下:

這裡寫圖片描述


這樣的話我們接收到前臺傳遞過來的引數對其進行列印,控制檯列印的結果為:

這裡寫圖片描述

很明顯的就是結果亂碼,這種亂碼的解決方式為:

這裡寫圖片描述

這裡亂碼問題已經解決,具體控制檯列印資訊不再展示,讀者自行編碼解決該問題。

  再說get方式請求時的亂碼問題的解決。
  http://localhost:8080/twp/postGetTest.do?username=小狼人

  上面這個超連結就是我們的get方式提交的HttpServletRequest請求。

  引數是中文,我們來處理一下試試。如果說你的Tomcat解壓之後只是在MyEclipse中進行了對映而沒有對其配置資訊做任何修改的話,那麼我們訪問
這裡寫圖片描述
時也會出現亂碼問題如下圖所示:

這裡寫圖片描述

當我們採用解決post提交時的解決方式解決的時候,發現還是亂碼:

這裡寫圖片描述,這個解決不了get請求時的亂碼問題,所以說,還得使用別的方式解決中文亂碼問題。

  我們用到的最多的請求方式是post方式請求,post中文亂碼很容易解決,雖然get沒有post方式用的多,但是get方式提交的資料中文亂碼的解決的難度比post要高。

第一種方式,較為簡單的一種方式:

找到對應的tomcat的解壓地址(解壓版Tomcat),然後找到:

這裡寫圖片描述

該資料夾路徑下的conf資料夾點進去,然後找到:

這裡寫圖片描述
server.xml檔案,找到該檔案後對其進行編輯,找到connector標籤,對其進行修改:

修改之前:

這裡寫圖片描述


修改之後:

這裡寫圖片描述

  重新啟動Tomcat,亂碼問題剞劂,自行編碼進行測試。
  第二種方式,就是不對Tomcat的配置檔案進行修改,直接在程式碼中實現。這種方式需要將剛才配置的server.xml還原。

  這裡的請求方式依然是通過超連結訪問的get請求方式。其後端程式碼實現方式是:

這裡寫圖片描述,這樣的話,get方式請求的中文亂碼問題依然迎刃而解。

這裡寫圖片描述

今天分享的請求時後臺接收資料的時候的中文亂碼問題的解決,下次會風向響應式中文亂碼問題。

上述問題中的重點是post方式提交引數時的中文亂碼問題的解決。難點是get方式提交引數時中文亂碼問題的解決。