JavaScript URL 字符串编码与解码方法详解
本文详细解析 JavaScript 中三种主要的 URL 编码方法:escape、encodeURI 和 encodeURIComponent。重点对比它们在字符保留、UTF-8 支持及适用场景上的差异,并介绍对应的解码函数及 C# 服务端解码方式,帮助开发者根据实际需求选择正确的编码策略以避免乱码。
JavaScript URL 编码方法概述
在 JavaScript 中处理 URL 字符串编码时,虽然 escape()、encodeURI() 和 encodeURIComponent() 都能过滤部分影响 URL 完整性的特殊字符,但它们的处理机制和适用范围存在显著差异。
后两种方法(encodeURI 和 encodeURIComponent)采用 UTF-8 编码格式进行传输,有效解决了因页面编码格式不一致而导致的乱码问题。
例如,当发送页面编码为 GB2312 而接收页面编码为 UTF-8 时,若使用 escape() 转换中文字符串,传输过程中极易出现乱码。
以下是 JavaScript 中对 URL 进行编码和解码的各种方法的具体说明:
escape 方法详解
1、escape 方法:返回一个包含所有计算机均可读取的编码字符串对象。
function escape(charString : String) : String
该方法不会编码以下字符:@ * / +
说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。
所有空格、标点符号、重音符号以及其他非 ASCII 字符均会被替换为 %xx 编码,其中 xx 代表该字符的十六进制数值。
例如,空格会被转换为“%20”。对于字符值大于 255 的字符,则以 %uxxxx 格式存储。
注意:escape 方法不应用于对“统一资源标识符”(URI) 进行编码。对此类编码,应使用 encodeURI 和 encodeURIComponent 方法。
encodeURI 方法详解
2、encodeURI 方法:返回编码为有效统一资源标识符 (URI) 的字符串。
function encodeURI(URIString : String) : String
该方法不会编码以下字符:! @ # $ & * ( ) = : / ; ? + '
说明:encodeURI 方法返回一个已编码的 URI。若将编码结果传递给 decodeURI,可还原为初始字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。如需对这些字符编码,请使用
encodeURIComponent 方法。
encodeURIComponent 方法详解
3、encodeURIComponent 方法:返回编码为统一资源标识符 (URI) 有效组件的字符串。
function encodeURIComponent(encodedURIString : String) : String
该方法不会编码以下字符:! * ( ) '
说明:encodeURIComponent 方法返回一个已编码的 URI。若将编码结果传递给 decodeURIComponent,可还原为初始字符串。由于 encodeURIComponent 会对所有字符进行编码,
需注意,如果字符串代表路径(如 /folder1/folder2/default.html),其中的斜杠也会被编码,导致发送至 Web 服务器时路径无效。若字符串包含多个 URI 组件,建议使用 encodeURI 方法进行编码。
解码方法(unescape/decodeURI/decodeURIComponent)
4、unescape 方法:从使用 escape 方法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的
字符均被替换为 ASCII 字符集中等效的字符。(以 %uxxxx 格式编码的 Unicode 字符,则用十六进制编码 xxxx 对应的 Unicode 字符替换。)
注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。
5、decodeURI 方法:返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) : String
补充说明:C# 中对 URL 编码的方法如下:
C# 服务端解码支持
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string)。前三种客户端编码方法均可通过此方法在后端进行解码。
以上就是 JavaScript 对字符串进行编码方法的完整总结,希望对大家有所帮助。
上文为小编整理的js字符串编码方法全攻略,感谢关注支持!
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
