跳到主要内容
Tooletto

URL 解码工具

URL 编码解码工具 的预设方案

把百分号编码的 URL 转换回可读文本。适合阅读追踪链接、解码一个跳转参数,或者搞清楚一个日志里记录的 URL 实际指向了什么。

  • 文件永不离开你的设备
  • 免费,无需注册
  • 无水印
  • 加载后可离线使用
Loading tool…

如何URL 编码解码工具

  1. 1

    选择方向

    把文本编码成适合 URL 的形式,或把编码过的 URL 解码回文本。

  2. 2

    选择模式

    组件模式会转义所有字符;完整 URL 模式会保留结构字符。

  3. 3

    复制结果

    结果会随输入即时更新。

一个解码后的 URL 参数实际上能揭示什么

一个营销追踪链接、一个跳转参数,或者从服务器日志里捕获的一个 URL,通常会以一长串一眼看不懂的百分号转义序列的形式出现——解码它能揭示实际的目标地址、搜索词,或者这个链接携带的数据,这往往是在点击一个可疑或陌生链接之前,搞清楚它实际会做什么最快的办法,或者是从一条被记录的请求 URL 里还原出用户当初搜索了什么。

正确读取多字节的 Unicode 转义序列

一个单独的重音字符或表情符号编码进 URL 之后,通常会产出好几个连续的百分号转义序列,而不是一个——é 会变成 `%C3%A9`,这是代表它 UTF-8 编码的两个转义字节,一个表情符号能产出四个。正确的解码意味着把这些多字节的 UTF-8 序列重新组合回它们所代表的那一个字符,而不是天真地把每一个 `%XX` 转义序列各自转换成一个独立字符,那样会对任何超出基本 ASCII 范围的内容产出乱码、无法阅读的输出。

解码时同时处理两种空格惯例

由于一个从日志、邮件链接或浏览器地址栏捕获的真实 URL,可能使用标准的 `%20`,也可能使用较老的表单编码 `+` 来表示空格,这个工具会同时检查并正确地把这两者都转换回一个字面空格,而不是只认识其中一种——粘贴一个用了 `+` 分隔符的查询字符串,不需要先手动把它转换成 `%20` 才能得到一个可读的结果。

常见问题

组件模式和完整 URL 模式有什么区别?

组件模式(`encodeURIComponent`)会转义包括 / ? & = # 在内的所有字符,这正是编码单个查询参数值时你想要的效果。完整 URL 模式(`encodeURI`)会保留这些结构字符不动,让整个地址依然可用。用错模式是最常见的 URL 编码 bug。

为什么我编码整个 URL 之后它就坏了?

你几乎肯定是对一整个完整 URL 用了组件模式,转义掉了 `://` 和用来分隔参数的 `&`。正确的做法是先单独编码每一个参数*值*,再组装 URL——不要对组装好的结果再做编码。

为什么空格有时变成 %20,有时变成 +?

百分号编码用的是 %20。`+` 这种形式来自较老的 HTML 表单编码(`application/x-www-form-urlencoded`),只在查询字符串里有效,在路径部分永远无效。这个工具产出的是 %20,同时能解码这两种形式。

表情符号和非英语字符是怎么处理的?

它们会被编码成 UTF-8 字节,所以 é 会变成 %C3%A9,一个表情符号会变成四个百分号转义序列。这才是正确的行为,并且能精确地往返转换。