【出現亂碼的原因】
首先無論使用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.xml:URIEncoding="utf-8",因爲在Tomcat5.0中和以後,默認情況下使用ISO-8859-1對URL提交的數據和表單中GET方式提交的數據進行重新編碼。
方式三(不依賴Tomcat的配置,推薦):
瀏覽器中兩次URL編碼。
服務器中自己再做一次URL解碼。
因爲參數中包含中文,瀏覽器都會使用當前瀏覽器編碼對其進行URL編碼,然後服務器端再進行URL解碼。如果首先將中文編碼,然後再傳到服務器端那麼就不會出現亂碼錯誤了。
jsp頁面代碼如下: