JavaScript 中 encode 与 decode 系列函数的应用说明

作者:纸飞机时间:2026-10-26 20:59:41浏览:103

本文详细解析 JavaScript 中用于 URI 编码的全局函数,包括 encodeURI、encodeURIComponent 以及已废弃的 escape 系列。重点说明各方法对特殊字符的处理差异、适用场景及注意事项,帮助开发者正确选择编码策略以避免请求错误。

encodeURIComponent

encodeURIComponent 方法

该操作旨在将文本字符串转换为统一资源标识符(URI)的有效组成部分。



encodeURIComponent(encodedURIString)



参数 encodedURIString 为必选值,代表一个已经过编码处理的 URI 组件字符串。



说明


encodeURIComponent 方法返回一个经过编码的 URI 字符串。若将此结果传递给 decodeURIComponent,即可还原为原始字符串。需要注意的是,由于该方法会对所有字符进行编码,若字符串表示路径(如 /folder1/folder2/default.html),其中的斜杠也会被编码,导致发送至 Web 服务器的请求无效。若字符串包含多个 URI 组件,应改用 encodeURI 方法进行编码。



escape 方法

escape 方法

该方法返回一个可在所有计算机上读取的编码 String 对象。



function escape(charString : String) : String


参数


charString


必选参数,指代需要编码的任意 String 对象或文本内容。


备注


escape 方法返回包含 charstring 内容的字符串值(采用 Unicode 格式)。所有空格、标点符号、重音符号及其他非 ASCII 字符均被替换为 %xx 编码形式,其中 xx 为该字符对应的十六进制数值。例如,空格被编码为“%20”。



对于字符值大于 255 的字符,采用 %uxxxx 格式进行存储。



注意:escape 方法不应用于对“统一资源标识符”(URI)进行编码。正确的做法是使用 encodeURI 和 encodeURIComponent 方法。


要求


版本 1



请参见


encodeURI 方法 | encodeURIComponent 方法 | String 对象 | 方法



适用于:Global 对象



encodeURI 方法

encodeURI 方法

该方法返回编码为有效统一资源标识符(URI)的字符串。



function encodeURI(URIString : String) : String


参数


URIString


必选参数,表示待编码的 URI 字符串。


备注


encodeURI 方法返回一个已编码的 URI。若将编码结果传递给 decodeURI,可还原为初始字符串。encodeURI 不会对以下字符进行编码:“:”、“/”、“;”和“?”。若需对这些字符编码,请使用 encodeURIComponent。



要求


版本 5.5



请参见


decodeURI 方法 | decodeURIComponent 方法



适用于:Global 对象



encodeURIComponent 方法

encodeURIComponent 方法详解

该方法返回编码为统一资源标识符(URI)有效组件的字符串。



function encodeURIComponent(encodedURIString : String) : String


参数


encodedURIString


必选参数,表示已编码 URI 组件的字符串。


备注


encodeURIComponent 方法返回一个已编码的 URI。若将编码结果传递给 decodeURIComponent,可还原为初始字符串。由于该方法对所有字符进行编码,若字符串代表路径(例如 /folder1/folder2/default.html),其中的斜杠也会被编码,导致发送至 Web 服务器的请求无效。若字符串包含多个 URI 组件,请使用 encodeURI 方法进行编码。



要求


版本 5.5



请参见


decodeURI 方法 | decodeURIComponent 方法



适用于:Global 对象



decode 系列方法

方法


从使用 escape 方法编码的 String 对象中返回已解码的字符串。



function (charString : String) : String


参数


charString


必选参数,指代需要解码的 String 对象或文本。


备注


该方法返回包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符,均替换为 ASCII 字符集中等效的字符。



以 %uxxxx 格式(Unicode 字符)编码的字符,替换为十六进制编码 xxxx 对应的 Unicode 字符。



注意:该方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。


要求


版本 1



请参见


decodeURI 方法 | decodeURIComponent 方法 | escape 方法 | String 对象



适用于:Global 对象



decodeURI 方法

decodeURI 方法

该方法返回已编码统一资源标识符(URI)的非编码形式。



function decodeURI(URIstring : String) : String


参数


URIstring


必选参数,表示已编码的 URI 字符串。


备注


建议使用 decodeURI 方法替代已过时的 escape 相关方法。



decodeURI 方法返回一个字符串值。



若 URIString 无效,将抛出 URIError 异常。



要求


版本 5.5



请参见


decodeURIComponent 方法 | encodeURI 方法



适用于:Global 对象



decodeURIComponent 方法

decodeURIComponent 方法

该方法返回统一资源标识符(URI)的一个已编码组件的非编码形式。



function decodeURIComponent(encodedURIString : String) : String


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



备注


URIComponent 是完整 URI 的一部分。



若 encodedURIString 无效,将产生 URIError 异常。



要求


版本 5.5



请参见


decodeURI 方法 | encodeURI 方法



[html] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Js encode,decode</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> </head> <body>  <textarea id=code cols=80 rows=20> <&#47textarea><br> <input type=button onclick=encode() value=编码> <input type=button onclick=run() value=执行> <input type=button onclick=decode() value=解码> </body> </html> 

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


[/html]



更多对照可以参考下面的这篇文章 JavaScript 全局对象参考手册

作者最新文章