URI参数中文乱码(针对IE6)

本文介绍了在IE6.0环境下处理中文参数传递乱码问题的方法,包括设置请求编码、参数加密等技术手段,并通过实例代码演示了解决方案。
 

我们经常使用如下方式进行参数传递,如:

  1. <a href="....?action=中文参数" mce_href="....?action=中文参数">url参数传递</a>  

 

而后台仅有如下代码:

  1. String action = request.getParameter("action");  

 

那么获取的可能是乱码,普通的解决方法有:

 

1.

  1. request.setCharacterEncoding("UTF-8");   
  2. String action=new String(request.getParameter("action")) ;  

 

2.

  1. String action = new Stirng(request.getParameter(action).getBytes("UTF-8"));  

 

3.

有些还说在Tomcat中的server.xml中修改配置文件,添加URIEncoding="UTF-8"

  1. <Connector port="8080" protocol="HTTP/1.1"   
  2.                connectionTimeout="20000"   
  3.                redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>  

 

以上方法测试都可以通过(非IE6.0),但是如果在IE6.0下测试,那么有很多问题。

 

在IE6.0下测试发现,IE6.0对中文参数的长度有限制,当超过2个中文字符后,第三个字符将产生中文乱码,无法获取全部的参数值,这可能是IE6.0的bug,一下提供解决的方法。

 

在传递参数时,对中文字符进行加密操作,具体代码如下:

 

前台URL地址:

  1. <a href="......?action= <%=java.net.URLEncoder.encode(" mce_href="......?action=&lt;%=java.net.URLEncoder.encode("中文参数","UTF-8")%>">url参数传递</a>  

 

后台接受代码:

  1. String action = new String(request.getParameter().getBytes("UTF-8"));  

 

在IE6.0下测试通过,无乱码产生,而且对中文字符进行了加密,如:%E8%AE%B8%E7%8E%B2,提高了安全性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值