java jsp传值乱码_关于JSP乱码问题(页面传值产生的乱码)

本文详细介绍了在JSP中遇到的中文乱码问题及其解决方案。问题源于网络传输时采用iso-8859-1编码,导致接收时需要进行转码。文章提到了三种解决方法:1. 字符串重新转码;2. 使用过滤器;3. 配置server.xml。作者推荐使用工具类进行统一转码,并强调要根据实际页面编码选择正确的转码方式。此外,还讨论了URL编码时遇到的空格问题及其处理方法。
摘要由CSDN通过智能技术生成

在JSP的输入框中写入中文,传给后台的时候,常常会出现乱码问题:

今天看了韩顺平老师的视频,对乱码问题有了初步的认识,又经过自己的实践,把总结写出来。

产生乱码的原因:java在网络上进行传输的时候,用的是iso-8859-1的编码形式进行传输。所以,在编码和解码(得到传递值)的时候,要对应起来。。

解决方法主要有三个:

1.重新转码 new String(u.getBytes("iso-8859-1"),"gb2312");

2.使用过滤器来解决[不稳定]

3.通过配置server.xml文件[不太稳定]

例 :

String userName = requset.getParameter("userName");

userName = new String(userName.getBytes("iso-8859-1"),"gb2312");

但每次都这样转,还是太麻烦了,因此可以写一个工具类,提供这个将乱码转成gb2312.

public class Tools{

//提供一个方法,将乱码转化成gb2312

public static String getNewString(String input){

String result = "";

try{

result = new String(input.getBytes("iso-8859-1"),"gb2312");

}catch(Exception e){

e.printStackTrace();

}

return result;

}

在用的时候,

String userName = request.getParameter("userName");

userName = Tools.getNewString(u);

注:在用这种方法时,后面的不一定就是gb2312,可以是gbk,utf-8.具体是哪一种,要取决于向该控制器传值的页面是哪个编码。

比如我的login.jsp中,是,因此,我就得用

id = new String(id.getBytes("iso-8859-1"),"utf-8");了。。。不能犯照抄的错误呀。

第三种方法:韩老师只是说了这种方法可以解决,它自己试验时没能通过,我试验也没能通过。可能和tomcat的版本有关系 。

在tomcat的配置文件server.xml中,

connectionTimeout="20000"

redirectPort="8443" />

加一个属性  URIEncoding="GBK"

PS1:

今天修改前人代码,搞的一头雾水,还是乱码的问题:

由于在url传值时,包含了空格,所以不能直接传递了。。。在传递时,要用:

urlEncoded = java.net.URLEncoder.encode(szSearchCondition);

&SearchConditionSelf=

主要是在接收时,如果里面包含了中文,又会乱码了。。。。试了一下午,终于得到答案:

if(tmpForTrans != null){

try{

String tmp = new String(tmpForTrans.getBytes("iso-8859-1"),"gb2312");

szSearchCondition = tmp;

}catch(Exception e){

e.printStackTrace();

}

System.out.println("tmpForTrans = " + tmpForTrans);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值