標籤:jsp 亂碼 中文亂碼 request
在利用表單提交資料時發現,獲得的中文參數會發生亂碼,解決方案如下:
<body><%String s=request.getParameter("uname");s = new String(s.getBytes("ISO-8859-1"),"utf-8");//解決亂碼問題%><%=s %></body>
s = new String(s.getBytes("ISO-8859-1"),"utf-8");此程式的作用是將接收到的的參數先轉化為位元組碼檔案,然後進行utf-8編碼。
防止中文亂碼的總結:
1、對於同一個應用,最好統一編碼,推薦為UTF-8,當然GBK也可以。
2、正確設定JSP的pageEncoding="UTF-8"
3、在所有的JSP/Servlet中設定contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),從而間接實現對瀏覽器編碼的設定。
4、對於非表單提交的get或url請求,可以修改Tomcat的預設配置,推薦將useBodyEncodingForURI參數設定為true,也可以將URIEncoding參數設定為 UTF-8(有可能影響其他應用,所以不推薦)。或者用下面的方法,在接收資料時處理:
request.getParameter("userID"),得到userID的值
request.getParameter("userID").trim()將這個值去掉兩邊的空格
request.getParameter("userID").trim().getBytes("ISO-8859-1"))將這個String用ISO-8859-1編碼成一個位元組數祖
new String(request.getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8")將剛才的位元組數祖傳進string的建構函式按照"utf-8"編碼建立一個string對象。
5.使用URLEncoder的方法
傳參前用:
//使用指定的編碼機制將字串轉換為 application/x-www-form-urlencoded 格式
String username_encoder = URLEncoder.encode(username,"UTF-8");
接參數後顯示用:
//使用指定的編碼機制對 application/x-www-form-urlencoded 字串解碼
String username_decoder = URLDecoder.decode(request.getParameter("username"),"UTF-8");
jsp中request接收中文參數亂碼問題解決辦法