URL 编解码

URL 编解码

对 URL 或查询参数进行 percent-encoding 与解码

浏览器本地计算

编码参数值选“参数值编码”,编码完整地址选“完整地址编码”;两种模式对 /、? 等字符的处理不同。

示例

输入

a+b c/中文

示例结果

a%2Bb%20c%2F%E4%B8%AD%E6%96%87

示例使用参数模式。普通解码不会将 + 当成空格。

技术细节与边界

百分号后两个十六进制数字表示一个字节。浏览器先用 UTF-8 编码,再转成 %HH。完整 URL 模式保留 : / ? # 等结构字符;参数模式会编码它们。JavaScript 的 encodeURIComponent 仍保留 ! ' ( ) *,因此不能直接视为严格的 RFC 3986 签名规范化实现。

关于此工具

对 URL 参数值或完整地址进行百分号编码与解码。分别提供 encodeURIComponent 与 encodeURI 模式,便于处理中文、空格、加号、斜杠以及回调地址中的嵌套参数。

适用场景

  • 把带空格 / 中文 / 特殊字符的查询参数拼进 URL。
  • 排查为什么服务器接收到的参数出现了 `%20`、`%25` 之类的乱码。
  • 在文档里贴一段 curl 或 Postman 命令,希望 URL 部分合法。

操作步骤

  1. 把 URL 或参数值粘贴到输入框。
  2. 选择编码粒度:encodeURIComponent(默认,编码所有非普通字符)或 encodeURI(保留 :/?# 等)。
  3. 点击“编码”或“解码”,结果可一键复制。

输入 / 输出说明

输入
任意 UTF-8 字符串;解码时需要是合法 percent-encoded 序列。
输出
percent-encoded 字符串或解码后的原文。

注意事项

encodeURIComponent 是最安全的,绝大多数场景(查询参数值、路径片段)都应该用它。encodeURI 只在你确认对方期望完整 URL 时才用。

常见问题

encodeURI 与 encodeURIComponent 差在哪?
encodeURIComponent 会转义所有保留字符(包括 :/?#[]@!$&'()*+,;=);encodeURI 认为这些是 URL 结构本身的一部分,会保留不动。传参用前者、拼完整 URL 用后者。
为什么解码结果出现了乱码?
原始字符串不是 UTF-8 编码,或者被截断了。可以先看编码前的字节是否已经完整(比如末尾 `%E4` 但没有后两位)。
空格应该编码成 `%20` 还是 `+`?
本工具把空格编码为 %20。application/x-www-form-urlencoded 规则在表单数据或按该规则序列化的查询参数中使用 +;普通 URL 解码不自动替换 +。
为什么解码后还有 %20?
原值可能被编码了两次,%2520 解码一次得到 %20。先确认数据流中的编码层数;反复解码可能把本应保留的字符变成分隔符。
整个 URL 都用参数值模式编码会怎样?
冒号、斜杠和问号等也会被编码,结果适合作为另一个参数的值,而不再是可直接访问的原始地址。请根据放置位置选择模式。

相关工具

URL 编解码 · 对 URL 或查询参数进行 percent-encoding 与解码
URL 编解码 — 工具示意图 · dayeku.com