JavaScript encodeURI() 函数

JavaScript encodeURI() 语法

encodeURI() 是 JavaScript 的一个全局函数,它用于对 “整个 URI” 进行编码,以便将 URI 中的特殊字符转换为 “%xx” 的形式(其中 “xx” 是字符的十六进制表示)。

语法:

encodeURI(uri)

说明:

encodeURI() 函数接收单个参数。

  • uri(必选):是一个 URI 字符串。

encodeURI() 函数转义会所有字符,但不包括以下字符。

  • 字母数字字符:A-Z a-z 0-9。
  • 特殊字符:- _ . ! ~ * ' ( )。
  • URI 保留字符:; / ? : @ & = + $ , # ( 这些字符在 URI 中有特定含义,encodeURI() 不会编码它们,因为它们是 URI 结构的一部分 )。

提示:

  • encodeURI() 是一个全局函数(顶层函数),我们可以直接调用而无需创建实例。
  • 如果只需要编码 URI 的某个部分(例如查询参数的值,而不是整个 URI),我们应该使用 encodeURIComponent() 函数。

JavaScript encodeURI() 摘要

属于 JavaScript 全局对象
使用频率
官方文档 查看
MDN 查看

JavaScript encodeURI() 示例

接下来,我们通过几个简单的例子来讲解一下 encodeURI() 函数是如何使用的。

示例 1:URI 包含中文

const str = "https://www.lvyenet.com/?keywords=绿叶网";
console.log(encodeURI(str));

运行结果如下。

https://www.lvyenet.com/?keywords=%E7%BB%BF%E5%8F%B6%E7%BD%91

示例 2:URI 包含特殊符号

const str = "https://www.lvyenet.com/?keywords=πθφ";
console.log(encodeURI(str));

运行结果如下。

https://www.lvyenet.com/?keywords=%CF%80%CE%B8%CF%86

encodeURI() 与 encodeURIComponent() 的区别

encodeURI() 与 encodeURIComponent() 这两个函数都用于对 URI 进行编码,但它们之间存在以下的区别。

  • encodeURI():不会对属于 URI 语法的字符(即 URI 保留字符)进行编码,包括 /、:、?、= 等。比如 "?keywords=python&charset=utf8" 编码之后还是 "?keywords=python&charset=utf8"。
  • encodeURIComponent():会对属于 URI 语法的字符进行编码,编码会更加彻底。比如 "?keywords=python&charset=utf8" 编码之后会变成 "%3Fkeywords%3Dpython%26charset%3Dutf8"。
encodeURI() 对比 encodeURIComponent()
原值 encodeURI() encodeURIComponent()
% %25 %25
空格 %20 %20
: : %3A
/ / %2F
? ? %3F
= = %3D
+ + %2B
; ; %3B
# # %23
$ $ %24
& & %26
@ @ %40

示例 3:encodeURI() vs encodeURIComponent()

const str = "?keywords=绿叶网&charset=utf8";

console.log(encodeURI(str));
console.log(encodeURIComponent(str));

运行结果如下。

?keywords=%E7%BB%BF%E5%8F%B6%E7%BD%91&charset=utf8
%3Fkeywords%3D%E7%BB%BF%E5%8F%B6%E7%BD%91%26charset%3Dutf8

分析:

再次强调一下:如果想要编码 “整个 URI”,我们应该使用 encodeURI() 函数。如果想要编码 “URI 的某个部分(如查询字符串)”,我们应该使用 encodeURIComponent() 函数。

上一篇: eval()

下一篇: encodeURIComponent()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号