解決jsp中後臺傳值中文到前臺亂碼的問題
阿新 • • 發佈:2018-11-30
臨時要在一個jsp頁面使用到後臺傳過來的一個引數,想到中文可能會亂碼,所以一開始是這樣寫的:
1. 後臺java程式碼傳值過程:
this.setName(URLEncoder.encode("測試","UTF-8"));
2.前臺jsp頁面取值過程,測試一下:
<%
String username = request.getParameter("name");
username = URLDecoder.decode(username,"UTF-8");
System.out.println(username);
%>
按照猜預期的目標,因該是頁面顯示出來<%=username%>的內容是“測試”,但還不湊巧的是,顯示出來是一堆亂碼。最後查了一下,原來是Http請求傳輸時將url以ISO-8859-1編碼,伺服器收到位元組流後預設會以ISO-8859-1編碼來解碼成字元流,所以這時候就清楚了,先將傳過來的引數使用ISO-8859-1編碼,再使用UTF-8解碼,即可解決問題:
<%
String username = request.getParameter("name");
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(username);
%>
3.原文參考連結 點選這裡