JavaScript 字符串编码方法详解:escape、encodeURI 与 encodeURIComponent

作者:半夏

时间:2026-10-26

浏览:257

本文详细介绍JavaScript中三种字符串编码方法:escape、encodeURI和encodeURIComponent。重点解析各函数的语法、保留字符范围及适用场景,指出escape已被ECMAScript v3废弃,推荐使用decodeURI和decodeURIComponent进行解码,帮助开发者根据是否包含特殊分隔符选择正确的编码策略。

文章目录
escape 定义和用法

escape 函数详解

escape() 函数用于对字符串进行编码,确保该字符串能在所有计算机上被正确读取。

参数 描述
string 必需。要被转义或编码的字符串。
 

返回值

返回已编码字符串的副本,其中部分字符被替换为十六进制转义序列。

说明

该函数不会对 ASCII 字母、数字以及部分标点符号(包括 * @ - _ + . / )进行编码,其余所有字符均会被转换为转义序列。

提示和注释

提示:可以使用 unescape() 函数对由 escape() 编码的字符串进行解码。

注释:ECMAScript v3 标准反对使用该方法,建议改用 decodeURI() 和 decodeURIComponent() 替代。

示例:

 encodeURI 函数详解

encodeURI 定义和用法

encodeURI 函数详解

encodeURI() 函数用于将字符串作为完整的 URI 进行编码。

语法:encodeURI(

URIstring)
参数 描述
URIstring 必需。一个字符串,含有 URI 或其他要编码的文本。
 

返回值

返回已编码字符串的副本,其中部分字符被替换为十六进制转义序列。

说明

该函数不会对 ASCII 字母、数字以及部分标点符号(包括 - _ . ! ~ * ' ( ) )进行编码。

encodeURI() 旨在对完整 URI 进行编码,因此不会转义在 URI 中具有特殊含义的 ASCII 标点符号:; / ? : @ & = + $ , #。

提示和注释

可以使用 decodeURI() 函数对编码后的字符串进行解码。

提示:如果 URI 组件中包含分隔符(如 ? 和 #),应使用 encodeURIComponent() 分别对各组件进行编码。

例子

encodeURIComponent 函数详解

定义和用法

encodeURIComponent 函数详解

encodeURIComponent() 函数用于将字符串作为 URI 组件进行编码。

语法
encodeURIComponent(URIstring)
参数 描述
URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。

返回值

返回已编码字符串的副本,其中部分字符被替换为十六进制转义序列。

说明

该函数不会对 ASCII 字母、数字以及部分标点符号(包括 - _ . ! ~ * ' ( ) )进行编码。

其他字符(如用于分隔 URI 组件的标点符号 :;/?:@&=+$,#)均会被一个或多个十六进制转义序列替换。

提示和注释

提示:请注意 encodeURIComponent() 与 encodeURI() 的区别,前者假设其参数是 URI 的一部分(如协议、主机名、路径或查询字符串),因此会转义用于分隔 URI 各部分的标点符号。

例子

encodeURIComponent 函数详解

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章