工具说明
关于 URL 编码解码器
URL Encoder/Decoder 会把 URL 中不安全或有特殊含义的字符转换成百分号编码,也可以把编码后的字符串还原成人类可读文本。
它适合处理查询参数、中文路径、回调地址和复制自日志的 URL 片段,所有转换都在浏览器本地完成。
如何使用 URL Encoder/Decoder
- 粘贴完整 URL、查询参数值或需要编码的文本。
- 点击 Encode,把空格、中文、符号等转换成安全的百分号编码。
- 点击 Decode,把 %E4%B8%AD%E6%96%87 这类片段还原成原文本。
- 只编码参数值时,优先处理 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 或重定向地址,仍要做协议白名单和输出转义。