有个需求要在前端发请求,且上送的参数写在了URL里面。有个参数值就是“%”。如果直接上送送%作为参数,URL大概长成这样:
"../../xxxServlet/xxxService?paraA=123¶B=%¶C=246"
上面的URL本意是要上送一个参数paraB,这个参数的值就是%,但是URL中百分号%本身就是用来对不安全字符进行编码的一个特殊字符,如果你需要在URL中传递一个带%的参数,那么这个%就需要进行转义或编码,以防止解析URL时造成歧义。
那么在URL中传递%可以有两种处理方法:
1.直接传一个%对应的编码
%对应的编码为%25,那么上面的URL就可改写为
"../../xxxServlet/xxxService?paraA=123¶B=%25¶C=246"
2.如果你并不能记得这些不安全字符的对应编码,也可以使用JavaScript的encodeURI来处理你的URL,但是要注意encodeURI并不会对在URL中有特殊含义的字符进行编码:
",/?:@&=+$#"
那么处理方式就是
var finalURL = encodeURI("../../xxxServlet/xxxService?paraA=123¶B=%¶C=246")
然后就得到了
"../../xxxServlet/xxxService?paraA=123¶B=%25¶C=246"
殊途同归。
参考资料
HTML URL编码表: http://www.w3school.com.cn/tags/html_ref_urlencode.html
JS encodeURI方法: http://www.w3school.com.cn/jsref/jsref_encodeuri.asp