JSP空间中使用request.getParameter方法乱码的问题!!
2013/3/31 8:22:54 | 阅8433 | 来源:好空间网络 [打印] [关闭] |
在Jsp中,url中包含汉字就很容易发生乱码的问题,今天我就介绍下我是怎么解决url中包含汉字的时候发生乱码的解决办法!!
其实这个是个小问题,有很多的办法可以解决!!!不过前几天在写程序的时候却遇到他了,解决了很久都没有办法!!后来没办法使用比较笨的办法才解决,于是把他写出来以免以后忘记了!!
一般get方式传递的时候很容易遭遇乱码,比较常用的解决方法是
request.setCharacterEncoding("GBK"); String haokongjian = request.getParameter(“jspkongjian”);
前面加了句 request.setCharacterEncoding("GBK");
这个指定在接受的时候用gbk编码!! 当然也可以用gb2312或者utf-8,但是在知道这些编码的时候别忘记把.jsp页面的
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>
和
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
2个地方的编码也统一下!!!有人会问不统一会怎么样?实话说说这个我不知道我也没测试过,,,但是我想问为什么你不把他统一呢??
一般情况下通过上面的办法就可以解决get方式乱码的问题!!!
我一直依赖都用这样的方法接收都是没有问题的,
但是前几天就遇到个怪事,同样的方法在别的页面没有乱码问题,在另外个网页里就显示了乱码!!!
于是咱们得接着找问题!!
首先想到的是修改tomcat的编码!!!
大家看我另外篇文章是介绍如何修改tomcat编码的
http://www.jspkongjian.net/news.jsp?id=515
把tomcat编码修改后还是不能正常....这个时候就比较郁闷了....
没办法,遇到问题咱们还得想办法解决,要记住程序是死的,他要是不正常肯定有他 不正常的原因,不要一有问题就怀疑是空间的,,,要想办法看看是什么地方出了问题!!
为了验证我的request.getParameter接收页是否正常,我把传递方式由get换为post提交,结果发现不乱码了....
由此可以确定是汉字在网络中用get方式传递的问题!!!案例到这里就算解决了,但是我发现我用post提交后用户体验很不好!!于是我在决定还是用get方式提交!!但是get方式又有乱码,怎么办呢??
我想几年前写过一个接收参数可以保证不乱码!!于是把几年前写的代码翻找出来,,终于找到了共享给大家
String haokongjian = new String(request.getParameter("jspkongjian").getBytes("ISO-8859-1"),"GBK");
用这样的方式接收get的url中带汉字的参数,一看居然不乱码了,,还是这个方法管用!!,但是这个方法有个缺点,那就是如果要接受的参数(上面例子中的 jspkongjian) 没有传递参数为空,那么这个程序就要报错!!
大家可以写个探测要接受的参数是不是属于空
String haokongjian =””;//要接收参数的值 if(jspkongjian==null || jspkongjian==””){ out.print(“参数不能为空”); return; }else{ haokongjian = new String(request.getParameter("jspkongjian").getBytes("ISO-8859-1"),"GBK"); }
这样就ok了!!!!
大致总结下遇到url中传递汉字发生乱码的情况,大家可以尝试的一些办法
1:使用request.setCharacterEncoding("GBK");方法
2:修改tomcat编码(修改办法http://www.jspkongjian.net/news.jsp?id=515)
3:改用post方式提交
4: 使用new String(request.getParameter("jspkongjian").getBytes("ISO-8859-1"),"GBK"); 解决
好空间网络(http://www.jspkongjian.net)为您提供专业的jsp虚拟主机!转载请保留出处