encodeURI 和 decodeURI 成对使用
encodeURI() 把字符串编码为 URI。
decodeURI() 解码某个编码的 URI。
encodeURIComponent 和decodeURIComponent 成对使用
encodeURIComponent() 把字符串编码为 URI 组件。
decodeURIComponent() 解码一个编码的 URI 组件。
在使用encodeURI 或 encodeURIComponent 的过程中,发现如果只使用一次编码,那么是无法正确解码的,需要使用二次编码,才能正确解码
var cc = encodeURIComponent('测试');
alert(cc); //%E6%B5%8B%E8%AF%95
cc = encodeURIComponent(cc);
alert(cc); //%25E6%25B5%258B%25E8%25AF%2595
通过url 传递后
cc = decodeURIComponent(cc);
alert(aa);
我仔细查了一下, 那是由于encodeURI 或 encodeURIComponent 方法都是采用UFT-8编码的,不会随我们的页面字符集的,而我们通过windows 系统的输入法输入的中文编码是gb2312,
对比第一和第二次编码, %E6 和 %25E6 %95 和 %2595 明显都多了%25, 这是因为% 被编码为 %25,
这样在传递到下一个页面后, 这个%还会被保留着, 不明白的人可以查查转义符 ,java 的是 / , oracle 的是 ‘ , 在oracle 中,我们要在结果里面保留’ ,那么编写语句的时候就需要连续4个‘, 如’‘’‘我’‘’‘, 到最终结果就是’我‘