URL编码方法

很多时候我们需要对url进行编码来进行传输,常用的对url编码的方式有2种encodeURI encodeURIComponent,相应的解码方法为:decodeURI decodeURIComponent。本文说明他们的区别和各自的使用场景。

区别

  • encodeURI 不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+'
  • encodeURIComponent 不会对下列字符编码 ASCII字母、数字、~!*()'

所以encodeURIComponentencodeURI编码的范围更大。
实际例子来说,encodeURIComponent会把 http://编码成http%3A%2F%2F 而encodeURI却不会。

var str = "http://www.cnlogs.com/blogs/my new blog";
var encodeStr = encodeURI(str); 
//http://www.cnlogs.com/blogs/my%20new%20blog
console.log(encodeStr)
var encodeComstr = encodeURIComponent(str) 
//http%3A%2F%2Fwww.cnlogs.com%2Fblogs%2Fmy%20new%20blog
//可见这个url已经不能正常访问
console.log(encodeComstr);
var ans = decodeURI(encodeStr)
console.log(ans)
ans = decodeURIComponent(encodeComstr)
console.log(ans)

场景

  • 如果你需要编码整个url,然后要使用这个url,使用encodeURI方法
  • 编码URL中的参数的时候,那么encodeURIComponent是最好方法
var param = "/user/newbook"; //param为参数
param = encodeURIComponent(param); //因为参数含有/,所以必须要用此方法
var url = "http://www.baidu.com?param=" + param;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 「搜狗输入法设置」窗口中选择左侧的「高级」,并点击右侧「高级模式」中的「自定义短语设置」,点击「添加新定义」 ht...
    张知卓见阅读 1,931评论 0 0
  • 思念成空,一切都是过眼云烟,子虚乌有。所有的美好就在那一刻变成泡沫。有些事还是别去刨根问底的好,真相往往都是残酷的...
    墨若筱汐阅读 223评论 0 1
  • 在成为全职妈妈之前,我的工作是一名HR管理人员,在对孩子的教育方面,或多或少就会受HR理念的影响。 之前并没有这么...
    睿哲雪雪阅读 586评论 2 5
  • 表达式 在Angular中表达式是运用在视图中的一段代码,如: 控制器 在Angular中,控制器(control...
    阿振_sc阅读 979评论 0 15