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)即可。

你可能感兴趣的:(Url中传中文名特殊字符处理)