对url 里面的中文使用encodeURI,需要使用二次encodeURI


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个‘,   如’‘’‘我’‘’‘, 到最终结果就是’我‘


版权声明:本文为lin49940原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。