JavaScript中escape、encodeURI与encodeURIComponent的区别

作者:代码拾荒

时间:2026-10-28

浏览:489

本文对比JavaScript中三种URL编码方法:escape、encodeURI和encodeURIComponent。重点分析它们对特殊字符的处理差异及UTF-8编码行为,指导开发者根据页面编码类型(如GB2312或UTF-8)选择合适的编码函数,避免URL解析错误。

文章目录

JavaScript URL编码方法概述

JavaScript提供了多种对URL字符串进行编码的函数,主要包括escape()、encodeURI()以及encodeURIComponent()。这三种方法的设计目的和适用范围各不相同。

escape() 方法特性

escape() 方法说明:

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

此方法不会编码以下字符:@、*、/、+

encodeURI() 方法特性

encodeURI() 方法说明:

该函数将URI字符串按照UTF-8编码格式转换为escape格式的字符串。

此方法保留不编码的字符包括:!、@、#、$、&、*、(、)、=、:、/、;、?、+

encodeURIComponent() 方法特性

encodeURIComponent() 方法说明:

与encodeURI()类似,该方法也将URI字符串按UTF-8编码格式转换为escape格式的字符串。不同之处在于,encodeURIComponent会编码更多的字符,例如斜杠/。因此,如果字符串包含URI的多个组成部分,不应使用此方法,否则斜杠被编码后会导致URL显示错误。

此方法保留不编码的字符包括:!、*、(、)、'

编码方法的选择建议

综上所述,处理中文字符串时,若不希望将字符串转换为UTF-8格式(例如原页面与目标页面的charset一致),可直接使用escape。若页面采用GB2312或其他编码,而接收参数的页面为UTF-8编码,则应选用encodeURI或encodeURIComponent。

此外,encodeURI和encodeURIComponent是在JavaScript 1.5版本之后引入的,而escape函数早在JavaScript 1.0版本中就已存在。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章