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 部分合法。
操作步骤
- 把 URL 或参数值粘贴到输入框。
- 选择编码粒度:encodeURIComponent(默认,编码所有非普通字符)或 encodeURI(保留 :/?# 等)。
- 点击“编码”或“解码”,结果可一键复制。
输入 / 输出说明
- 输入
- 任意 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 都用参数值模式编码会怎样?
- 冒号、斜杠和问号等也会被编码,结果适合作为另一个参数的值,而不再是可直接访问的原始地址。请根据放置位置选择模式。
相关工具