URI编码与解码

2022/8/14 JavaScript

# 1. URL 和 URI、URN 的区别

  • URI:Uniform Resource Identifier -- 统一资源标识符
  • URL:Uniform Resource Locator -- 统一资源定位符
  • URN:Uniform Resource Name -- 统一资源名称
  • URL(指定位置的 URI) 和 URN(指定名称的 URI) 都是 URI(同时指定名称和位置的 URI) 的子集。

# 2. 介绍

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

# 3. 有何不同

  • encodeURIencodeURIComponent:用来编码。

  • decodeURIdecodeURIComponent:用来解码。

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

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

  • encodeURIencodeURIComponent:唯一区别就是编码的字符范围,其中 encodeURI 方法不会对下列字符编码 -- ASCII字母,数字,~!@#$&()=:/,;?+' ,encodeURIComponent 方法不会对下列字符编码 -- ASCII字母,数字,~!()',所以 encodeURIComponentencodeURI 编码的范围更大。实际例子来说:encodeURIComponent 会把 http:// 编码成 http%3A%2F%2F,而 encodeURI 却不会。

# 4. 举例

  • 如果你需要编码整个 URL,然后需要使用这个URL,那么用 encodeURI
  • 当你需要编码 URL 中的参数的时候,那么 encodeURIComponent 是最好方法。
Last Updated: 2023/04/22, 23:39:26
彩虹
周杰伦