jsp中post方式請求一般不會亂碼,如果亂碼加上這句:
解決辦法一
代碼如下 |
複製代碼 |
request.setCharacterEncoding("utf-8"); |
而get方式請求,若url含非西歐編碼必然會亂碼,處理方式:
代碼如下 |
複製代碼 |
request.setCharacterEncoding("utf-8"); |
//將請求參數使用ISO-8859-1分解成位元組數組,再將位元組數組解碼成字串
代碼如下 |
複製代碼 |
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8"); |
解決辦法二
java.net.URLEncoder.encode()傳送字元編碼
面貼一下解決這個問題參考的文章:
使用java.net.URLEncoder.encode()可以對要傳遞的中文進行編碼
a.在傳參數之前先把參數進行轉碼:java.net.URLEncoder.encode(param);
取值時用語句java.net.URLDecoder.decode(param);再轉回中文
b.在你的Tomcat目錄-->conf目錄-->server.xml裡找出這段:
代碼如下 |
複製代碼 |
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" <!--在裡邊加上這個參數--> URIEncoding="gb2312" /> |
例如:
代碼如下 |
複製代碼 |
<%@ page contentType="text/html;charset=gb2312" %> <a href="ds.jsp?url=<%=java.net.URLEncoder.encode("編碼的是這裡","GB2312")%>">點擊這裡</a> <% if(request.getParameter("url")!=null) {
str=request.getParameter("url"); str=java.net.URLDecoder.decode(str,"GB2312"); str=new String(str.getBytes("ISO-8859-1")); out.print(str); } %> |
若,字元編碼為utf-8也可以實現.或者在此段代碼中,不寫出字元編碼也可以(唯寫一個參數)。