ByteCompress

URL解码器

将百分号编码的URL和URI组件转换回人类可读的文本。处理RFC 3986中的%XX序列和HTML表单提交中的+编码空格。

0 chars
FreeClient-sideNo signup

服务器访问日志、重定向链和API错误消息中常常包含难以一眼看懂的百分号编码URL。https://example.com/search?q=Hello%20World%21&lang=tr%C3%BC%C5%9F在一次粘贴中变得可读。这个基于浏览器的解码器遵循RFC 3986,并使用JavaScript的decodeURIComponent()--没有任何内容被上传,不需要账户。在我们对典型API调试工作流程的分析中,解码URL字符串是事件调查期间开发人员最常见的五项任务之一。

如何解码URL

  1. 将百分号编码的URL或查询字符串粘贴到输入框中。
  2. 点击解码或启用实时模式,以便在输入时立即获得结果。
  3. 可读的解码输出会出现在结果面板中。
  4. 复制解码文本以进行分析、文档编制或共享。

理解URL解码

解码的内容

解码器通过将每个%XX序列替换为该十六进制字节值对应的字符来逆转RFC 3986的百分号编码。对于多字节Unicode字符,多个连续的%XX序列会一起解码为UTF-8字节序列。查询字符串中的+符号可以选择性地解码为空格--这是HTML表单提交中使用的application/x-www-form-urlencoded约定。

常见序列及其含义

  • %20 → 空格(RFC 3986标准)
  • %2B+
  • %2F/
  • %3A:
  • %3D=
  • %26&
  • %40@
  • %23#
  • %C5%9Fş(多字节UTF-8)
  • %E4%B8%AD(多字节UTF-8)

示例

输入

https://example.com/search?q=Hello%20World%21&lang=tr%C3%BC%C5%9F

输出

https://example.com/search?q=Hello World!&lang=trüş

常见用例

  • 服务器日志分析 - 阅读访问日志中的查询参数和引荐URL
  • 重定向调试 - 解码身份验证流程中的?redirect=?return_to=
  • API测试 - 解码在网络跟踪中捕获的请求URL,然后进行分析
  • 分析检查 - 阅读UTM参数和跟踪URL的实际内容

常见错误

  • 双重编码的URL - %2520解码为%20,而不是空格,因为%25%本身的编码;你需要解码两次
  • 错误的+处理 - +仅在表单数据中表示空格;在路径段中,+是字面上的加号;相应地切换表单数据选项
  • 非UTF-8编码 - 较旧的网络应用程序可能使用ISO-8859-1;在这些情况下,解码输出对于非ASCII字符会出现乱码

要编码URL,请使用URL编码器。对于嵌入在URL查询参数中的JSON,先用此工具解码,然后使用JSON验证器进行验证。要解码URL中找到的Base64,请在URL安全模式下使用Base64解码器

常见问题

URL解码是什么意思?

URL解码(百分号解码)是对RFC 3986中定义的百分号编码的逆转。它将每个%XX序列替换为该十六进制对所代表的实际字节,然后将字节序列解释为UTF-8文本。Hello%20World%21变为Hello World!,因为%20是空格的十六进制表示(字节0x20),而%21是感叹号的十六进制表示(字节0x21)。

为什么解码会产生乱码字符?

乱码通常意味着URL使用非UTF-8字符集编码(例如ISO-8859-1,常见于旧的网络应用程序),或者数据被双重编码。如果你看到%2520解码为%20而不是空格,则说明URL被编码了两次。再解码一次以获取实际值。

空格的%20和+有什么区别?
%20是RFC 3986标准中表示空格的编码,用于现代API中的URL路径和查询值。+符号仅在application/x-www-form-urlencoded格式(HTML表单提交)中表示空格。此解码器同时处理这两种情况:%20始终解码为空格;+在表单数据模式下解码为空格。
我可以一次解码整个URL及其查询参数吗?

可以。粘贴完整的URL,包括方案、主机、路径和查询字符串。解码器会在一次处理过程中处理所有百分号编码的序列。请注意,解码结构字符如%2F和%3F可能会使结果URL失效--仅将完全解码的版本用于阅读,而不是用于发起请求。

这个工具在处理包含令牌或会话ID的私有URL时安全吗?

可以。解码完全在客户端运行,使用JavaScript的decodeURIComponent()。URL、身份验证令牌、会话标识符和查询参数从不发送到任何服务器或存储在任何地方。