JavaScript URL 编码与解码方法详解:escape、encodeURI 与 encodeURIComponent

作者:青柠

时间:2026-10-24

浏览:142

本文详细解析 JavaScript 中处理 URL 字符串的三种编码方法:escape、encodeURI 和 encodeURIComponent。重点对比它们在 UTF-8 支持、保留字符及适用场景上的差异,说明为何现代开发中应优先使用 encodeURI 系列方法以避免乱码,并简述 C# 服务端对应的解码方式。

文章目录

JavaScript URL 编码方法概述

虽然 escape()、encodeURI() 和 encodeURIComponent() 这三种方法都能对可能影响 URL 完整性的特殊


字符进行过滤,但后两者采用 UTF-8 编码方式传输,有效解决了因页面编码不一致而导致的乱码问


题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是


UTF-8),若使用 escape() 转换传输中文字串,便会出现乱码问题。


以下是 JavaScript 中对 URL 进行编码和解码的各种方法:


escape 方法及其局限性

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


function escape(charString : String) : String


不会被此方法编码的字符: @ * / +


说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、


重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。


例如,空格返回为“%20”。(字符值大于 255 的字符以 %uxxxx 格式存储。)


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


encodeURIComponent 方法。


encodeURI 与 encodeURIComponent 的区别

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


function encodeURI(URIString : String) : String


不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + '


说明:encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的


字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用


encodeURIComponent 对这些字符进行编码。


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


function encodeURIComponent(encodedURIString : String) : String


不会被此方法编码的字符:! * ( ) '


说明:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给


decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,


请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被


编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI


组件,请使用 encodeURI 方法进行编码。


对应的解码方法

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


function unescape(charString : String) : String


说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的


字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六


进制编码 xxxx 的 Unicode 字符代替。)


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


decodeURIComponent 方法。


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


function decodeURI(URIstring : String) : String


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


function decodeURIComponent(encodedURIString : String) : String


C# 服务端编码处理

BTW:C#中对URL编码的方法。。。


编码:Server.UrlEncode(string)


解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章