企业网站最重要的访问对象是,深圳网站开发设计公司排名,上海网站建设哪家便宜,盲盒小程序源码一、前言 讲这3个方法区别的文章太多了#xff0c;但是大部分写的都很绕。本文试图从实践角度去讲这3个方法。 二、escape和它们不是同一类 简单来说#xff0c;escape是对字符串(string)进行编码(而另外两种是对URL)#xff0c;作用是让它们在所有电脑上可读。编码之后的效… 一、前言 讲这3个方法区别的文章太多了但是大部分写的都很绕。本文试图从实践角度去讲这3个方法。 二、escape和它们不是同一类 简单来说escape是对字符串(string)进行编码(而另外两种是对URL)作用是让它们在所有电脑上可读。编码之后的效果是%XX或者%uXXXX这种形式。其中 ASCII字母、数字、*/ 这几个字符不会被编码其余的都会。最关键的是当你需要对URL编码时请忘记这个方法这个方法是针对字符串使用的不适用于URL。事实上这个方法我还没有在实际工作中用到过所以就不多讲了。 三、最常用的encodeURI和encodeURIComponent 对URL编码是常见的事所以这两个方法应该是实际中要特别注意的。 它们都是编码URL唯一区别就是编码的字符范围其中 encodeURI方法不会对下列字符编码 ASCII字母、数字、~!#$*():/,;? encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*() 所以encodeURIComponent比encodeURI编码的范围更大。 实际例子来说encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。 四、最重要的我该什么场合用什么方法 区别上面说的很清楚了接下来从实际例子来说说把。 1、如果只是编码字符串不和URL有半毛钱关系那么用escape。 2、如果你需要编码整个URL然后需要使用这个URL那么用encodeURI。 比如 encodeURI(http://www.cnblogs.com/season-huang/some other thing); 编码后会变为 http://www.cnblogs.com/season-huang/some%20other%20thing; 其中空格被编码成了%20。但是如果你用了encodeURIComponent那么结果变为 http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing 看到了区别吗连 / 都被编码了整个URL已经没法用了。 3、当你需要编码URL中的参数的时候那么encodeURIComponent是最好方法。 var param http://www.cnblogs.com/season-huang/; //param为参数
param encodeURIComponent(param);
var url http://www.cnblogs.com?next param;
console.log(url) //http://www.cnblogs.com?nexthttp%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F 看到了把参数中的 / 可以编码如果用encodeURI肯定要出问题因为后面的/是需要编码的。 转载本站文章请注明作者和出处 奇葩一朵朵 – http://www.cnblogs.com/season-huang/ 请勿用于任何商业用途 转载于:https://www.cnblogs.com/season-huang/p/3439277.html