⑴ 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); %>