URL解码工具

使用我们的URL解码工具将URL输入解码为普通字符串,方便数据读取。

2 个评分中的 5 个
URL解码工具

URL解码工具是一款免费工具,可将经过百分号编码的 URL 文本还原为原始字符串。

URL 解码有什么作用?

URL 解码会撤销转义处理,还原通过 URL 及其他采用百分号编码的既定语法传递的空格、标点符号和其他字节。百分号编码使用一个百分号加两位十六进制数字来表示一个字节。表单式 URL 编码还会用 + 表示空格。例如,空格可写成 %20,& 符号可写成 %26。

下面是一个简单的解码前后对比:

编码输入:red%20%26%20blue

解码输出:red & blue

之所以需要这种编码,是因为部分字符在 URL 中具有结构含义。例如,问号用于分隔 URL 的查询部分,而在表单式查询数据中,字面上的 & 符号通常用于分隔字段。对这些字符进行编码后,应用程序就能把它们作为数据传递。

URL 编码不是加密,无法提供任何保密性。任何能看到编码值的人都可以将其解码。不要认为经过百分号编码的密码、访问令牌或个人信息已经受到保护。

示意图:文本经由 URL解码工具 双向转换

URL解码工具怎么用?

粘贴或输入编码后的文本并进行处理,然后在 URL 解码结果字段中查看还原后的内容。此工具使用 PHP 的 urldecode 函数,因此会转换有效的 %HH 序列,并将加号视为空格。

  1. 复制需要解码的部分,例如查询参数的值。
  2. 输入经过 URL 编码的值。除非引号本身就是该值的一部分,否则不要额外添加引号。
  3. 处理 URL 输入,然后检查 URL 解码结果。
  4. 如果输出中仍有 %2F 或 %20 等序列,请先确认源内容是否经过了多次编码,再决定是否继续解码。
digily.link 上的 URL解码工具 工具及其输入表单

解码过程在服务器上完成。你的输入会通过 HTTPS 发送到服务器,且不会被存储,但处理期间数据确实会离开你的设备。除非这些数据适合由服务器端处理,否则不要把机密信息粘贴到此 URL解码工具中。

哪些地方会用到 URL 编码?

URL 编码最常见于查询字符串、表单提交以及嵌入链接的值中。此外,当数据需要通过受限的文本格式传输时,也可能在一些不太显眼的场景中遇到它。

  • 查询字符串:搜索 "tea & cake" 时,可能会表示为 q=tea+%26+cake。
  • 数据 URI:媒体类型后面的文本数据可以采用百分号编码,Base64 也是另一种常见表示方式。
  • 电子邮件链接:mailto 链接可能会对主题或正文参数中的空格、换行符和标点进行编码。电子邮件内部使用的 MIME 传输编码属于不同格式。
  • JSON 载荷:JSON 本身有自己的转义规则,但 JSON 字符串中可能包含已经编码的 URL 或查询值,需要单独解码。
  • 国际化域名:非 ASCII 域名标签通常使用 Punycode,而不是百分号编码。路径和查询部分仍然可以包含经过百分号编码的 UTF-8 字节。

如果编码文本是以 xn-- 开头的域名标签,请使用 IDN到Punycode转换。URL解码工具用于处理经过百分号编码的 URL 组成部分,不适用于 Punycode 转换。

URL解码工具 工具生成的结果示例

URL 解码示例

以下示例展示了一些常见的 URL 编码输入及其对应的解码文本。

  • hello%20world 解码后为 hello world。
  • name=Tom+Jones 解码后为 name=Tom Jones。
  • fish%26chips 解码后为 fish&chips。
  • 当这些字节表示 UTF-8 文本时,%C2%A3 解码后为 £。
  • 按 UTF-8 解释时,%E6%9D%B1%E4%BA%AC 解码后为 東京。
  • 100%25 解码后为 100%。

普通字母、数字和未编码的标点通常会原样保留。输入为空时,URL 解码结果也为空。很长的输入仍遵循相同的解码规则,但浏览器、服务器和接收系统可能会自行限制请求或 URL 的长度。

带重音符号的字符和非拉丁字符通常会编码为一串 UTF-8 字节,每个字节分别编码。如果原系统使用了其他字符编码,解码后的字节可能显示为替换符号或看似无意义的文本。

为什么 URL 解码失败或出现乱码?

如果输入含有不完整的百分号序列、经过多次编码、使用了错误的字符集,或者根本不是 URL 编码数据,解码结果可能保持不变或与预期不符。PHP 的 urldecode 会原样保留格式错误的百分号序列,而对于多重编码的输入,解码一次只会得到中间结果。不要反复尝试解码,应先检查原始数据来源。

  • 多重编码的输入:%2520 解码一次会变成 %20,第二次解码后才会成为空格。只有确定还存在另一层编码时,才应再次解码。
  • 不完整的百分号序列:每个编码字节都必须包含两位十六进制数字。末尾单独出现的 % 或 %2 之类的值格式有误,无法表示完整的编码字节,因此 PHP 的 urldecode 会将其原样保留。
  • 字符编码错误:百分号解码还原的是字节。例如,把 ISO-8859-1 字节按 UTF-8 解释,即使百分号序列本身有效,也可能出现乱码。
  • 数据是二进制而非文本:解码后的字节可能表示图像、压缩文件或其他二进制内容。这类输出通常不会显示为可读文本。
  • 编码类型不对:如果把 URL 解码结果继续传给 Base64解码工具,该工具可能会因为标准字母表与 URL 安全字母表不匹配、缺少 = 填充或输入已损坏而失败。URL 百分号编码没有填充,也不使用 Base64 字母表。URL 解码不会验证或修复这些 Base64 问题。

处理字面上的加号时要特别注意。在表单式 URL 编码中,+ 表示空格。真正的加号通常应在解码前编码为 %2B。

常见问题

应该解码整个 URL,还是只解码其中一部分?

如果可以,请只解码单个路径段或查询参数值。对整个 URL 解码可能会把 %26、%3F 或 %2F 等已编码的保留字符还原成分隔符,从而改变 URL 的解析方式。

URL 解码支持小写十六进制代码吗?

支持。百分号序列中的十六进制数字不区分大小写,因此 %2f 和 %2F 表示同一个字节。大小写混用的序列同样有效。

这个工具会对同一个值反复解码吗?

不会。每次调用 urldecode 只执行一次解码。如果 %252F 变成 %2F,还需要再解码一次才能得到斜杠。不过,反复解码可能会改变原本就需要包含字面百分号序列的数据。

URL 解码能修复损坏的文本吗?

不能。它可以还原有效的百分号编码,但无法补全缺失的十六进制数字,也无法准确判断原始字符集。如果解码后的字节显示异常,请检查来源系统、HTTP 标头或相关文档。

遇到以 xn-- 开头的值该怎么办?

应将其视为 Punycode 域名标签,而不是普通的百分号编码文本。请使用 IDN到Punycode转换,然后仔细核对转换后的域名,因为外观相似的 Unicode 字符可能来自不同的文字系统。

类似工具

URL编码工具

使用我们的URL编码工具将任何字符串输入编码为URL格式,确保网址的正确性和安全性。

4,833
40

热门工具