encodeURIComponent编码后java后台的解码

Posted 筱小Q

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了encodeURIComponent编码后java后台的解码相关的知识,希望对你有一定的参考价值。

encodeURI不会对#等特殊符号编码,当访问地址中含有#等特殊字符的时候,会自动删除#后面的字符串,导致页面有误;

解决办法:使用encodeURIComponent编码;

javascript:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

java:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");

为什么要两次编码的原因:

后台java代码给searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,

这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");进行一次解码就好了。

 

注意:

encodeURIComponent不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ‘ ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的

 

以上是关于encodeURIComponent编码后java后台的解码的主要内容,如果未能解决你的问题,请参考以下文章

encodeURIComponent的用法

Javascript encodeURIComponent 匹配 java encode 特殊字符

encodeURIcomponent编码和ASP.NET之间编码转换

如何传超长的字符串到后台

escape()encodeURI()encodeURIComponent() 编码解码

escape,encodeURI,encodeURIComponent的区别