4.encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别

一、前言

统一资源标识符,或叫做 URI,是用来标识互联网上的资源(例如,网页或文件)和怎样访问这些资源的传输协议(例如,HTTP 或 FTP)的字符串。除了encodeURI、encodeURIComponent、decodeURI、decodeURIComponent四个用来编码和解码 URI 的函数之外 ECMAScript 语言自身不提供任何使用 URL 的支持。

二、URI组成形式

一个 URI 是由组件分隔符分割的组件序列组成。其一般形式是:

Scheme : First / Second ; Third ? Fourth

其中斜体的名字代表组件;“:”, “/”, “;”,“?”是当作分隔符的保留字符

三、区别

encodeURIdecodeURI 函数操作的是完整的 URI;这俩函数假定 URI 中的任何保留字符都有特殊意义,所有不会编码它们。

encodeURIComponentencodeURIComponent函数操作的是组成 URI 的个别组件;这俩函数假定任何保留字符都代表普通文本,所以必须编码它们,所以它们(保留字符)出现在一个完整 URI 的组件里面时不会被解释成保留字符了。

var uri = "http://xx/#/y?a=1%&b=我";
var string1 = encodeURI(uri);
var string2 = encodeURIComponent(uri);
console.log(string1);//http://xx/#/y?a=1%25&b=%E6%88%91
console.log(string2);//http%3A%2F%2Fxx%2F%23%2Fy%3Fa%3D1%25%26b%3D%E6%88%91

这也正是可以对整个URI使用encodeURI(),而只能对附加在现有URI后面的字符串使用encodeURIComponent()的原因所在。一般来说,我们使用encodeURIComponent()方法的时候要比使用encodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是对基础URL进行编码.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,811评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,814评论 0 1
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,721评论 0 13
  • 考前刷完了1988,留给我最深刻记忆的就是崔泽。 谁的生活里有这样的天使呢,笑起来整个世界都亮了。 都说他高智商低...
    意薄云水_阅读 1,657评论 0 0
  • 她瞬间愣住。教室里,老师已经开始讲课,他却站在门口,不怀好意地看着她。面对他油腻的眼神,她感到一阵反胃:“记我迟到...
    作家明至阅读 4,241评论 0 1

友情链接更多精彩内容