高级选项
将 + 转换为空格
启用后,+ 字符将被转换为空格。这在解码查询参数时非常有用。
实时模式
启用后,文本将在您输入时自动解码。
这些选项帮助您控制URL中编码字符的解码方式。
什么是 URL 解码?
URL 解码是百分号编码的逆过程:读取编码 URL 中的 %XX 转义序列,并将其还原为对应的字符。这就是如何从浏览器、API 或日志行所交付的编码 URL 中恢复可读的查询字符串、表单值或路径段的方式。
URL 解码是如何工作的?
URL 解码遵循特定的流程,将百分号编码的序列还原为其原始字符:
- 扫描输入字符串中的百分号编码转义序列(%XX)
- 将每个 %XX 从其两位十六进制数字转换回原始字节值
- 连续解码的字节被重新组合成 UTF-8 字符(多字节序列变为一个字符)
- 在查询字符串上下文中,+ 解码为空格(application/x-www-form-urlencoded),而 %2B 保留为字面量 +
- 非保留字符和已解码的文本原样通过,不作更改
为什么使用 URL 解码器?
- 可读输出:将 %20、%40 和 %3D 还原为空格、@ 和 =,从而读懂 URL 的真实内容
- 国际文本:从 UTF-8 字节序列重建带重音和非 ASCII 字符,使 %C3%A9 重新读作 é
- 调试:在对查询字符串、OAuth 重定向或 webhook 载荷采取行动之前,先检查其中的真实值
- 符合标准:按照 RFC 3986 解码,与浏览器和服务器使用的规则一致,从而看到与它们完全相同的内容
URL 解码的常见应用有哪些?
URL 解码在许多 Web 开发场景中必不可少:
- 表单提交:从 application/x-www-form-urlencoded 的 GET 和 POST 数据中读取原始字段值
- API 开发:解包到达 API 端点的经过百分号编码的路径和查询参数
- 文件系统:恢复为了在 URL 中传输而被百分号编码的文件路径和文件名
- 链接调试:解码已分享或记录在日志中的 URL,查看其中包含的特殊字符和国际文本
URL 解码示例是什么样的?
以下是一些常见的 URL 解码示例:%20(或 +)变为空格,%40 变为 @,%23 变为 #,%26 变为 &,%3D 变为 =。像 %C3%A9 这样的 UTF-8 序列会变为国际字符 é。
什么是百分号编码?
百分号编码是 RFC 3986 §2.1 定义的机制,用于在 URI 内部表示不安全或保留的字符。规则是机械的:每个不能直接出现的字节都被写成一个百分号后跟两个十六进制数字——%XX 形式——其中 XX 是该字节的值。é 这类非 ASCII 字符会先被编码为它们的 UTF-8 字节序列,然后每个字节再分别进行百分号编码。开发者几乎每天都会遇到它:在查询字符串、表单提交、OAuth 回调 URL、REST API 路径参数以及任何 URL 需要承载标点、空格或不在非保留集合 A–Z a–z 0–9 - _ . ~ 中的字符之处。
将 %C3%A9 解码为 é 究竟是怎么工作的?
以编码后的查询字符串 ?q=caf%C3%A9&lang=fr 为例。解码会得到 ?q=café&lang=fr。以下是按字节逐步的说明:
- 输入:
?q=caf%C3%A9&lang=fr - 输出:
?q=café&lang=fr
%C3→ 字节0xC3(二进制11000011)——一个 2 字节 UTF-8 序列的首字节。%A9→ 字节0xA9(二进制10101001)——续字节。合在一起,C3 A9是 U+00E9 的 UTF-8 编码,也就是é。- 字符
?、=和&不会被改动,因为它们是结构性的——它们划分了查询及其键/值对。字面量caf也原样通过,因为小写 ASCII 字母属于非保留集合。
decodeURIComponent 和 decodeURI 有什么区别?
JavaScript 提供两个内置的解码函数,混淆它们是 URL 处理中最常见的 bug 之一:
decodeURIComponent(str)会解码每一个百分号编码序列,包括&、=、?、/和#等保留字符。请将其用于单独的查询字符串值或路径片段——绝不要用于整个 URL。decodeURI(str)是有意保守的:它会跳过保留字符。把%26传给它会返回字面字符串%26,而不是&。它适用于希望结构在往返中保持不变的整段 URI。
经验法则:如果该字符串是 URL 的一部分(单个参数、片段、编码后的文件名),请使用 decodeURIComponent。此工具的行为与 decodeURIComponent 一致——输入中的每一个 %XX 序列都会被解码,包括保留字符。
解码 URL 就是读取它真正包含的内容。在上方粘贴一段编码字符串,每一个 %XX 序列都会直接在浏览器中还原为对应的字符,让您无需向服务器发送任何数据,即可调试查询参数、检查 OAuth 重定向或恢复带重音的文件名。