JavaScript 中 escape、encodeURI 与 encodeURIComponent 编码函数的区别与使用场景

作者:小括号

时间:2026-10-27

浏览:554

本文详细介绍JavaScript中用于字符串编码的三个核心函数:escape、encodeURI和encodeURIComponent。文章对比了它们在字符保留、编码格式(如%xx与%uxxxx)及适用场景上的差异,通过具体代码示例说明在URL参数传递、整体跳转及数据交互中如何正确选择编码方式,确保链接不被特殊字符截断且能被服务端正确解码。

文章目录

JavaScript 编码函数概述

JavaScript 处理字符串编码主要涉及三个函数:escape、encodeURI 和 encodeURIComponent,分别对应三个解码函数:unescape、decodeURI 和 decodeURIComponent。



1、传递参数时需要使用encodeURIComponent

合理组合使用这些编码方式,可以防止 URL 被 # 等特殊字符意外截断,确保链接结构的完整性。


应用场景与代码示例

以下是一个具体的应用示例:


<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7& u='+encodeURIComponent


("http://cang.baidu.com/bruce42")+'">退出</a& gt;');</script>



2、进行url跳转时可以整体使用encodeURI

例如,在修改页面地址时可以使用:Location.href=encodeURI(http://cang.baidu.com/do/s?word=中国&ct=21);


使用该方法编码后的字符,在 PHP 服务端可以通过 urldecode() 函数进行反向解码。



3、js使用数据时可以使用escape

各函数编码规则对比

当 escape 对 0-255 范围之外的 Unicode 值进行编码时,会输出 %u**** 格式;而在其他情况下,escape、encodeURI 和 encodeURIComponent 的编码结果基本一致。


escape 函数不编码的字符包括 69 个:*,+,-,.,/,@,_,0-9,a-z,A-Z。


encodeURI 函数不编码的字符包括 82 个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。


encodeURIComponent 函数不编码的字符包括 71 个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。



附上这三个函数的详细介绍:

escape 方法详解

escape 方法


用于对 String 对象进行编码,以便使其能在所有计算机上被读取。


escape(charString)


必选项 charstring 参数是指需要被编码的任意 String 对象或文字。


说明


escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符均使用 %xx 编码替代,


其中 xx 代表表示该字符的十六进制数值。例如,空格会被编码为 "%20" 。


对于数值大于 255 的字符,则以 %uxxxx 格式进行存储。


注意:escape 方法不能用于对统一资源标识符 (URI) 进行编码。对 URI 进行编码应使用 encodeURI 和 encodeURIComponent 方法。



encodeURI 方法详解

encodeURI 方法


用于将文本字符串编码为一个有效的统一资源标识符 (URI)。


encodeURI(URIString)


必选的 URIString 参数代表一个已编码的 URI。


说明


encodeURI 方法返回一个编码后的 URI。如果将编码结果传递给 decodeURI,将返回初始字符串。encodeURI 方法不会对以下字符进行编码:":"、


"/"、";" 和 "?"。若需对这些字符进行编码,请使用 encodeURIComponent 方法。



encodeURIComponent 方法详解

encodeURIComponent 方法


用于将文本字符串编码为一个统一资源标识符 (URI) 的有效组件。


encodeURIComponent(encodedURIString)


必选的 encodedURIString 参数代表一个已编码的 URI 组件。



说明

encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURIComponent,将返回初始字符串。由于 encodeURIComponent


方法会对所有字符进行编码,请注意,如果字符串代表一个路径(例如 /folder1/folder2/default.html),其中的斜杠也会被编码。这样一来,当该编码结


果作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章