⑴ jsP 頁面編碼改為UTF-8或GBK,request.getParameter傳值亂碼
解決中文亂碼
1)解決表單post方式提交參數時參數亂碼
request.setCharacterEncoding("GBK");
註:a.置於得到的第一個參數之前【request.getParameter("XXX");】
b.不要寫成response.setCharacterEnconding("GBK");
2) 解決表單get方式提交參數時的亂碼
修改server.xml文件-->URIEncoding="GBK"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="GBK"/>
註:改變server.xml後tomcat不會reload,需要重啟tomcat才會有效
3)解決的是servlet頁面顯示的亂碼(servlet接受數據後顯示數據)
response.setCharacterEnconding("GBK"); <==>
response.setContentType("text/html;charset=GBK");語句的後半句
4)url地址包含中文參數或者<jsp:param name="user" value="中文">
<%request.setCharacterEncoding("GBK");%>
注意:這里到底是用gbk或者是用utf-8與你jsp或html頁面的編碼方式有關,要保證servlet的編碼方式與向其提交數據的jsp頁面或html頁面的編碼一致。
如果你不想看這些東西,我可以給你一個模板代碼:
servlet文件頭:
public class XXXXX extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException,IOException {
resp.setContentType("text/html;charset=gbk");
//解決的是servlet頁面顯示的亂碼
req.setCharacterEncoding("GBK");
//解決post方式參數傳遞的參數亂碼
PrintWriter out = resp.getWriter();
......
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
this.doGet(req, resp);
}
}
jsp文件開頭:
<%@ page contentType="text/html;charset=GBK"%>
<%request.setCharacterEnconding("GBK");%>
⑵ 如何解決 jsp 中url傳值的中文亂碼問題
第一步:在tomcat 的server.xml文件中設置web伺服器埠配製中加下面兩句:
useBodyEncodingForURI="true"
URIEncoding="UTF-8"
第二步:JSP頁面編專碼用UTF-8(也可以用「gb2312",第一步與屬解碼要一至)傳值時編碼一下:
以傳遞的參數為strPar為例, 在傳遞數據前將strPar進行編碼java.net.URLEncoder.encode(strPar,"UTF-8");
第二步:解碼 在獲取數據伺服器端Action中得到的strPar進行解碼java.net.URLDecoder.decode(strPar,"UTF-8");
本人測試時傳入action中可以不解碼也正常。
舉例:
Url傳值:
<a href="myPage.jsp?strPar=<%=java.net.URLEncoder.encode("中文參數值","UTF-8")%>">點擊這里</a>
//下面是解碼
String cnStr=java.net.URLDecoder.decode(strPar,"GB2312");
⑶ JSP頁面之間傳遞參數,參數中有中文,編碼格式都設置的UTF-8,為什麼還亂碼
獲取傳過來的參數前
使用下面語句設置一下編碼:
request.setCharacterEncoding("utf-8");
⑷ jsp插入資料庫亂碼 中文的參數怎麼處理
1、JSP頁面亂碼
這種亂碼的原因是應為沒有在頁面里指定使用的字元集編碼,解決方法:只要在頁面開始地方用下面代碼指定字元集編碼即可,
2、資料庫亂碼
這種亂碼會使你插入資料庫的中文變成亂碼,或者讀出顯示時也是亂碼,解決方法如下: 在資料庫連接字元串中加入編碼字元集 String
Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
並在頁面中使用如下代碼:
response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312");
3、中文作為參數傳遞亂碼
當我們把一段中文字元作為參數傳遞個另一頁面時,也會出現亂碼情況,解決方法如下: 在參數傳遞時對參數編碼,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords) 然後在接收參數頁面使用如下語句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
response.sendRedirect("?gh=0001&xm=" + java.net.URLEncoder.encode("忘憂草")); String s=new String(request.getParameter("xm").getBytes("ISO8859_1"),"gb2312"); out.println(s);
4、JSP頁面亂碼加這句?
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>
5、在form中用get方法傳參亂碼解決方法 如: 1、 login.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%> <html> <head>
<title>get傳參亂碼問題</title> </head> <body>
<form name="form1" action="login_do.jsp" method="GET"> <input type="text" name="username"/><br>
<input type="password" name="password"/><input type="submit" value="提交"/> </form> </body> </html> ============ 2、login_do.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%> <%
String temp=request.getParameter("username"); if(temp!=null){ temp=new String(temp.getBytes("8859_1"),"GBK"); }
out.println(temp); %>