JSP页面数据传递中文乱码- request.getParameter()

 在JSP进行页面跳转或者表单提交时,经常会涉及到数据的传输,而其中经常用到传输中文文字,如果设置不当则会出现乱码情况这里转载别人的方法进行参考。

  只是简单的JSP页面操作,并涉及框架,框架可以添加滤波器进行解决,在随后的文章中将进行介绍。

方法1:

在Jsp,url中包含汉字就很容易发生乱码的问题,今天我就介绍下我是怎么解决url中包含汉字的时候发生乱码的解决办法!!

其实这个是个小问题,有很多的办法可以解决!!!不过前几天在写程序的时候却遇到他了,解决了很久都没有办法!!后来没办法使用比较笨的办法才解决,于是把他写出来以免以后忘记了!!

一般get方式传递的时候很容易遭遇乱码,比较常用的解决方法是

1
2
request.setCharacterEncoding( "GBK" );
String haokongjian = request.getParameter(“jspkongjian”);

前面加了句 request.setCharacterEncoding("GBK");

这个指定在接受的时候用gbk编码!! 当然也可以用gb2312或者utf-8,但是在知道这些编码的时候别忘记把.jsp页面的

1
<%@ page contentType= "text/html; charset=GBK"  language= "java"  import = "java.sql.*"  errorPage= ""  %>

 

1
< 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方式又有乱码,怎么办呢??我想几年前写过一个接收参数可以保证不乱码!!于是把几年前写的代码翻找出来,,终于找到了共享给大家

1
String haokongjian =  new  String(request.getParameter( "jspkongjian" ).getBytes( "ISO-8859-1" ), "GBK" );

用这样的方式接收geturl中带汉字的参数,一看居然不乱码了,,还是这个方法管用!!,但是这个方法有个缺点,那就是如果要接受的参数(上面例子中的 jspkongjian) 没有传递参数为空,那么这个程序就要报错!!大家可以写个探测要接受的参数是不是属于空

1
2
3
4
5
6
7
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"); 解决


方法2:

<%@ page language="java" pageEncoding="UTF-8"%>

< !-- 告诉浏览器该jsp格式为utf-8,此时注意网页本身(右击->properties)的编码是否为utf-8 -->

在head内加入:
<!-- 告诉服务器,这里采用的是utf-8 -->
< meta http-equiv="Content-Type" content="text/html; charset=utf-8">

3.1对于get请求:
String name2 = new String(name.getBytes("iso-8859-1"),"UTF-8");

3.2 对于post请求
 request.setCharacterEncoding("utf-8");//对于post方法有效,对get无效.一定要放在解析的第一行,否则不行。
 String name = request.getParameter("name");
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值