Web應用的亂碼處理
阿新 • • 發佈:2018-11-28
亂碼產生的原因:編碼和解碼的方式不一樣
1.get請求:
亂碼的產生:
瀏覽器傳送請求時會將URL進行utf-8編碼,請求到達tomcat伺服器後會以ISO-8859-1的方式進行解碼,所以在Servlet中通過request.getParameter()方式獲得的引數是亂碼的。
解決亂碼問題:
改變tomcat的編碼方式。
修改Server專案中的server.xml,加上URIEncoding="utf-8"
。即
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="80" protocol ="HTTP/1.1" redirectPort="8443"/>
2.post請求
post方式的請求會繞過tomcat伺服器,直接到達doPost()方法,所以引數不會被tomcat解碼,而是在request.getParameter()獲取引數之前進行自動解碼,所以要在獲取引數之前設定字元的編碼方式:request.setCharacterEncoding("utf-8");
另外,還要使瀏覽器以utf-8的方式讀取相應資訊:response.setCharacterEncoding("utf-8");
3.將頁面上的編碼方式設定為utf-8。
<meta charset ="UTF-8">
4.將web專案所有檔案的編碼方式改為utf-8。
在專案的Properties中設定。