URL 编码解码器

URL encode/decode 与组件编码转换

URL encode/decode 与组件编码转换
?
输入
输出

工具说明

关于 URL 编码解码器

URL Encoder/Decoder 会把 URL 中不安全或有特殊含义的字符转换成百分号编码,也可以把编码后的字符串还原成人类可读文本。

它适合处理查询参数、中文路径、回调地址和复制自日志的 URL 片段,所有转换都在浏览器本地完成。

如何使用 URL Encoder/Decoder

  1. 粘贴完整 URL、查询参数值或需要编码的文本。
  2. 点击 Encode,把空格、中文、符号等转换成安全的百分号编码。
  3. 点击 Decode,把 %E4%B8%AD%E6%96%87 这类片段还原成原文本。
  4. 只编码参数值时,优先处理 value,不要把整个 query string 里的 & 和 = 一起误编码。

常见使用场景

  • 把搜索词、回调地址或重定向参数放进 URL 前先编码,避免 &、?、# 截断参数。
  • 调试接口日志时,把 percent-encoded 路径或 query 还原成中文和可读符号。
  • 排查 OAuth redirect_uri、Webhook callback 或分享链接里的二次编码问题。
  • 比较前端 encodeURIComponent 输出和后端解析结果是否一致。

百分号编码、URL 参数和常见坑

URL 中的某些字符有结构含义,例如 ?, &, =, #, /。百分号编码会把字节写成 %HH 形式,让这些字符作为数据传输而不是被解析成 URL 结构。

  • 空格: 常见编码是 %20;表单编码中也可能出现 +。
  • 中文和 emoji: 会先按 UTF-8 转成多个字节,再分别写成百分号编码。
  • encodeURI vs encodeURIComponent: 前者保留 URL 结构字符,后者更适合单个参数值。
  • 双重编码: %25E4 往往说明原来的 % 又被编码了一次。

URL 编码解码常见问题

应该编码整条 URL 还是单个参数?
多数场景应编码单个参数值。整条 URL 编码会把 :、/、?、& 等结构字符也转义,可能导致链接无法按预期解析。
为什么空格有时是 %20,有时是 +?
%20 是通用 URL percent-encoding;+ 常见于 application/x-www-form-urlencoded 表单规则。
Decode 后为什么还有百分号?
可能是双重编码,或原文本本来就包含百分号。可以再解码一次,但要确认不是把合法百分号误处理。
URL-safe Base64 还需要 URL encode 吗?
通常更少需要,因为它避开了 + 和 /。但放进 query string 前仍要确认是否含有 = padding 或其他特殊字符。
输入会上传吗?
不会。编码和解码在浏览器本地执行,输入不会上传到 wetool.site。

URL encoding 与 Base64 的区别

URL encoding 用来让字符安全地出现在 URL 中;Base64 用来把字节表示成文本。调试 token、图片或二进制片段时可能会同时遇到两者,但它们解决的问题不同。

encodeURI 与 encodeURIComponent 对照

很多 URL 编码错误不是算法错,而是把“整条 URL”和“单个参数值”混在一起处理。

  • 整条 URL: 用 encodeURI 语义,保留 : / ? & = # 等结构字符,适合已经拼好的链接。
  • 参数值: 用 encodeURIComponent 语义,编码 &、=、?、#,适合 search、redirect_uri、callback 等 value。
  • 表单规则: application/x-www-form-urlencoded 常把空格写成 +,而通用 percent encoding 更常见的是 %20。

调试 URL 编码时先查这些点

当接口收到的 URL 参数不对时,通常要同时检查浏览器、前端代码、网关和后端框架各自做了几次解码。

  • %25 往往代表原来的 % 又被编码了一次,可疑点是二次编码。
  • redirect_uri 里如果有自己的 query string,内部的 ?、&、= 必须作为数据编码。
  • 不要把解码后的用户输入直接拼进 HTML 或重定向地址,仍要做协议白名单和输出转义。