在jsp中,當使用out.print(request.getParameter("parameter-name"))輸出表單資料時,如果表單資料為中文字元時,則輸出的內容是亂碼。
引起中文亂碼的原因是,在預設情況下,提取表單資料使用的編碼格式為UTF-8.為瞭解決中文亂碼問題,首先要使用 ISO-8859-1 編碼格式將表單資料存放區到位元組數組中,然後再使用藉助 gb2312的編碼格式將位元組數群組轉換為字串。完整的處理表單的程式碼如下:
String str=request.getParameter("parameter-name");
Byte[] buffer=str.getByte("ISO-8859-1");
String str1=new String(buffer,"GB2312");
張孝祥的《Javaweb開發內幕-核心基礎》對中文亂碼問題有詳細的講解,建議好好看看(另外,孫鑫的Java教學視頻也有對亂碼的詳細講解)。在該書的p356頁,是這麼描述的:
【由於getParameter方法將本來是gb2312編碼的請求參數值按照iso8859-1字元集編碼轉換成了一個不正確的unicode字串,printWriter.println方法再將這個不正確的unicode字串按照gb2312字元集編碼轉換成數組輸出時 就出現了中文亂碼問題。
iso8859-1字元集編碼到unicode編碼的轉換是一種可逆的運算,沒有發生資訊損失(原理參考孫鑫的Java視頻教學),只要將unicode字串再轉換成iso8859-1編碼 就可以還原出最初的位元組數組。
然後,我們將還原出的初始位元組數組按照他本來的字元集編碼轉換層unicode,就可以得到正確的unicode字串。然後再將正確的unicode按照一種正確的字元集編碼進行輸出是,瀏覽器就可以顯示出正確的中文字元了。】
具體的方法可以參考上面的代碼
關鍵字:解決jsp中文亂碼問題 jsp 中文亂碼 jsp亂碼問題 jsp中文顯示亂碼 jsp頁面亂碼
jsp表單提交亂碼 jsp頁面顯示亂碼 中文參數傳遞亂碼 jsp 參數 中文亂碼 jsp 傳遞參數 jsp傳遞中文參數 jsp傳遞多個參數
url 中文參數 亂碼 jsp 亂碼 jsp 中文亂碼 jsp亂碼問題