超詳細解決servlet中get和post請求方式的亂碼問題

想必初學者在學習java web階段時,總遇到讓人頭疼的編碼問題,下面做者就爲你們帶來一篇完美解決GetPost請求中文亂碼的問題。我以爲挺不錯的,如今就分享給你們,也給你們作個參考。一塊兒跟隨我過來看看吧!java

首先,讀者看本身的Tomcat是哪一個版本,在Tomcat8.0以上(包括8.0版)對get方法已經作了內部的處理,默認設置編碼格式爲中文,因此不準擔憂亂碼問題,只需對post請求按照文章方法設置編碼,方可解決亂碼問題,若讀者Tomcat版本在8.0如下,按照此文章內容也可解決編碼問題。(建議更換8.0以上版本)。git

Tomacat下載地址:tomcat.apache.org/github

對於Post請求,只需在Servlet或者jsp中寫入以下代碼就能夠把解決從表單中傳入的中文亂碼問題

request.setCharacterEncoding("utf-8");
複製代碼

而對於Get請求,由於請求參數會被附加到地址欄的URL以後,因此不能用上面的處理方法。應該這樣:

String str=request.getQueryString();

//使用URLDecoder解碼字符串

String str1=java.net.URLDecoder.decode(str,"utf-8");

String[] paraStrings=str1.split("&");

//paraStrings[0]就是第一個參數,依次類推...

for(String paraString : paraStrings)

{

 String[] nameValue=paraString.split("=");

 //nameValue[0]就是表單的name,nameValue[1]就是表單name對應的值

}
複製代碼

還有一種方法就是獲取請求參數以後對請求參數值從新編碼,也就是先將其轉換成字節數組,再將字節數組從新解碼成字符串(建議你們使用)。web

String str=request.getParameter("name");

byte[] bytes=str.getBytes("ISO-8859-1");

String name=new String(bytes,"utf-8");
複製代碼

以上這篇完美解決Get和Post請求中文亂碼的問題就是做者分享給你們的所有內容了,但願能給你們一個參考,也但願你們多多支持做者。apache

寫在最後數組

推薦本身的Github地址:github.com/Lmobjecttomcat

歡迎讀者前來訪問,您的點贊與留言是對做者最大的支持與鼓勵。謝謝!
複製代碼
相關文章
相關標籤/搜索