JSP空间中使用request.getParameter方法乱码的问题!!

2013/3/31 8:22:54 | 阅5649 来源:好空间网络 [打印] [关闭]
 

 

 

在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");

 

 

用这样的方式接收geturl中带汉字的参数,一看居然不乱码了,,还是这个方法管用!!,但是这个方法有个缺点,那就是如果要接受的参数(上面例子中的 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虚拟主机!转载请保留出处

 

 

 

经营许可证ICP:皖B2-20100052 公司邮箱:zcdnsz@jspkongjian.net
Copyright © 2004-2015, 安徽好空间网络科技有限公司 版权所有 , 本站素材部分来源于网络,如有侵权请告知删除。