URL 编解码
中文按 UTF-8 转成 %E4%BD%A0 这样的百分号形式,全部在本地完成
结果
等待输入
怎么用
- 选好模式:只处理一个参数值用「组件」,要保留整条链接里的
:/?#&用「整串」。 - 点「编码」把特殊字符转成百分号形式,点「解码」还原;结果区右上角可一键复制。
- 如果内容是从表单提交的查询串里复制来的,勾上「解码时把 + 当空格」再解码。
URL 为什么必须编码
URL 里只能安全出现 ASCII 的一部分字符,而 ? & # / 这些还有语法含义——一个没转义的空格或 & 就能让参数被截断或串位。所以非 ASCII 字符(中文、emoji)和保留字符都要转成 %XX 形式。
中文变成 %E4%BD%A0 的原因是:先把字符按 UTF-8 编成字节(你 = E4 BD A0),再把每个字节写成两位十六进制,前面加 %。所以一个汉字通常对应 3 个 %XX,这也是为什么编完长度会明显变长。
encodeURI 与 encodeURIComponent 的差别
这是最容易踩的坑:整串链接不能用「组件」模式编,否则 https:// 会变成 https%3A%2F%2F,链接直接失效。反过来说,单个参数值必须用「组件」模式,否则值里的 & 与 = 会被保留下来,拼进查询串时又把参数拆坏了。
空格:%20 还是 +
URL 规范里空格是 %20;而 HTML 表单提交(application/x-www-form-urlencoded)约定用 + 表示空格。两种写法同时存在于现实世界,所以本工具把「+ 当空格」做成了解码时的可选项——不勾选时 + 原样保留,适合处理路径里的正常加号。
两个常见误解
- 编码不是安全措施:它只是换一种写法,任何人都能还原。URL 里的 token、邮箱、手机号依然会出现在服务器日志、浏览器历史与 Referer 头里。
- 别重复编码:已经编码过的串再编一次,
%会变成%25(%E4%BD%A0→%25E4%25BD%25A0),接口收到后解出来还是百分号串。看到%25基本就是被编了两遍。
和其他工具配合
如果参数值本身是一段 Base64 或 JSON,可以先在这里解出真实内容,再分别用Base64 编解码或JSON 在线工具继续处理。