解决URL中参数乱码问题

Get提交方式,传递参数乱码
例如:想使用重定向URL,response.sendRedirect(req.getContextPath()+"/index.jsp?info=请您先登录");
这样,在index.jsp中显示info内容时,往往会出现乱码,这是由于tomcat默认采用ISO-8859-1对URL进行编码,而浏览器默认不采用任何编码;另外还有除了字母,数字,以及一些标点符号外,其他字符在URL中传递过程中都是不安全的,可能会被浏览器当作参数的分隔符来解析,因此,对get方式传输中文,应该对中文信息进行编码,使用java.net.URLEncoder.encode("中文","utf-8");  
如下所示:
res.sendRedirect(req.getContextPath()+"/index.jsp?info="+java.net.URLEncoder.encode("请您先登录", "UTF-8")) ;
然后,在index.jsp页面中显示info信息时,应该解析编码:
info = URLDecoder.decode(info,"utf-8") ;
info = new String(info.getBytes("ISO-8859-1"),"utf-8") ;
这样,显示出的info就不是乱码了
另外,可以修改tomcat的默认编码方式,如下所示:(server.xml中)
修改:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443"/>
为:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
然后:
res.sendRedirect(req.getContextPath()+"/index.jsp?info="+java.net.URLEncoder.encode("请您先登录", "UTF-8")) ;
然后,在index.jsp页面中显示info信息时,应该解析编码:
info = URLDecoder.decode(info,"utf-8") ;  即可正常显示了
Tomcat5.0以后,get方式传递参数和post方式传递参数的默认编码方式不同,使用useBodyEncodingForURI="true"将它们的编码方式设置为一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值