get和post方式提交中文亂碼問題解決方案

【出現亂碼的原因】   

     首先無論使用get方式提交,還是post方式提交,如果參數中包含中文,瀏覽器都會使用當前瀏覽器編碼對其進行URL編碼,然後服務器端再進行URL解碼,如果瀏覽器提交數據的編碼和服務器接收數據的編碼格式不一致,那麼就有可能產生中文亂碼。在ie中可以通過菜單欄--查看---編碼查看編碼格式。

【post方式提交亂碼解決方法】

  對於表單中POST方式提交的數據,只要在接收數據的JSP中正確request.setCharacterEncoding參數,即將對客戶端請求進行重新編碼的編碼設置成瀏覽器編碼,就可以保證得到的參數編碼正確。

request.setCharacterEncoding(myEncoding );

    request.setCharacterEncoding(myEncoding)的作用是設置對客戶端請求進行重新編碼的編碼。該方法用來指定對瀏覽器發送來的數據進行重新編碼(或者稱爲解碼)時,使用的編碼。

    另外還有一點需要注意:

    request.setCharacterEncoding(myEncoding)和response.setCharacterEncoding(myEncoding )

 的區別,前者是瀏覽器提交到後臺時對提交的數據設置編碼,後者是後臺發送數據到瀏覽器時對

對於發送數據,設置編碼。

【get方式提交亂碼解決方法】(參考湯陽光OA)

    方案一:

    str = new String(str.getBytes("ISO-8859-1"),"UTF-8"),這種方式的大概意思,道說是先把str按照“ISO-8859-1”編碼格式拆分成數組,再轉爲GBK格式組合起來。(這種方式有的情況下不能轉換好。不推薦)

方式二:

tomcat服務器中修改server.xmlURIEncoding="utf-8",因爲在Tomcat5.0中和以後,默認情況下使用ISO-8859-1對URL提交的數據和表單中GET方式提交的數據進行重新編碼。

方式三(不依賴Tomcat的配置,推薦):

  瀏覽器中兩次URL編碼。

  服務器中自己再做一次URL解碼。

因爲參數中包含中文,瀏覽器都會使用當前瀏覽器編碼對其進行URL編碼,然後服務器端再進行URL解碼。如果首先將中文編碼,然後再傳到服務器端那麼就不會出現亂碼錯誤了。

wKiom1PwOrOiDWTlAABYji5o7is217.jpg


jsp頁面代碼如下:

wKioL1PwPQSwRxcEAACbUukXLXo126.jpg






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章