Url中传中文名特殊字符处理

Url中传中文名特殊字符处理

一般要通过get方式传中文或特殊字符,会通过base64进行转码后,再传递,如下:

需要传递的内容:tempURL="totalup.checkloop.do?ui_key=totalup&ui_tokey=listview&ui_tohref=%2Ftotalup.list.do%3F&ui_toform=&";

使用HTMLCoder.encodeBASE64(tempURL)进行转码,会生成:

dG90YWx1cC5jaGVja2xvb3AuZG8/dWlfa2V5PXRvdGFsdXAmdWlfdG9rZXk9bGlzdHZpZXcmdWlf/tdG9ocmVmPSUyRnRvdGFsdXAubGlzdC5kbyUzRiZ1aV90b2Zvcm09Jg==

/d /t等特殊字符存在,在做request传递或其它处理时会将特殊自动转义这些特殊字符,所以需要在java中进行URLEncoder.encode(HTMLCoder.encodeBASE64(tempURL),"UTF-8")进行转码。

这样将会生成:

dG90YWx1cC5jaGVja2xvb3AuZG8%2FdWlfa2V5PXRvdGFsdXAmdWlfdG9rZXk9bGlzdHZpZXcmdWlf%0D%0AdG9ocmVmPSUyRnRvdGFsdXAubGlzdC5kbyUzRiZ1aV90b2Zvcm09Jg%3D%3D

 

jsp页面上,通过request获得传递过来的传,系统会自动转为:

dG90YWx1cC5jaGVja2xvb3AuZG8/dWlfa2V5PXRvdGFsdXAmdWlfdG9rZXk9bGlzdHZpZXcmdWlf(/t有换行符)

dG9ocmVmPSUyRnRvdGFsdXAubGlzdC5kbyUzRiZ1aV90b2Zvcm09Jg==

 

如果通过js传递,如:

window.location.href="/index.jsp?historyback=<%=historyback%>&";

就会因为有换行符而报错。

 

所在,在通过request获得值后,再进行URLEncoder.encode()转换。就没有问题了。

 

在接收的类中,不用管URLEncoder.encode(),直接使用:HTMLCoder.decodeBASE64(historyback)即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值