使用步骤
- 选择「编码」或「解码」。
- 选择模式:单个参数值用「参数值」,保留网址结构用「完整网址」,HTML 表单数据用「表单」(空格转为 +)。
- 粘贴文本,结果实时更新。
- 如果输入的是网址,下方会列出协议、主机、路径和各个查询参数。
参数说明
- 参数值
- 除字母、数字和 - _ . ~ 外全部编码,用于查询参数的值或路径片段。等同于 encodeURIComponent,并额外编码 RFC 3986 保留的 ! ' ( ) *。
- 完整网址
- 保留构成网址结构的字符(: / ? # & =),只编码空格和非 ASCII 字符。等同于 JavaScript 的 encodeURI。
- 表单
- application/x-www-form-urlencoded 格式,HTML 表单提交时使用。空格编码为 + 而不是 %20;解码时 + 还原为空格。
示例
| 输入 | 参数值 | 完整网址 | 表单 |
|---|---|---|---|
a b&c |
a%20b%26c |
a%20b&c |
a+b%26c |
中文 |
%E4%B8%AD%E6%96%87 |
%E4%B8%AD%E6%96%87 |
%E4%B8%AD%E6%96%87 |
https://x.com/?q=1 2 |
https%3A%2F%2Fx.com%2F%3Fq%3D1%202 |
https://x.com/?q=1%202 |
https%3A%2F%2Fx.com%2F%3Fq%3D1+2 |
拼接带参数的网址
把用户输入放进查询字符串时,要对每个值单独编码:
const url = `https://example.com/search?q=${encodeURIComponent(query)}&page=2`;
如果最后才对整个网址编码,值里面的 & 和 = 不会被编码,参数就会被拆错。
常见问题
%20 和 + 有什么区别?
两者都可以表示空格,但适用位置不同。%20 在网址任何位置都有效;+ 只在表单提交的查询字符串里表示空格,在路径中就是加号本身。
为什么出现 %2520 这种重复编码?
内容被编码了两次,%20 里的 % 又被编码成了 %25。解码两次即可还原;代码里要确保只有一处对参数做编码。
encodeURI 和 encodeURIComponent 该用哪个?
往网址里拼接每个参数值时用 encodeURIComponent(「参数值」模式);只有对一个可能含空格或中文的完整网址编码时才用 encodeURI(「完整网址」模式)。
提示「百分号编码不完整或不正确」是什么意思?
某个 % 后面不是两位十六进制数字,或者解出的字节不是合法的 UTF-8。提示中会给出第一个出错的位置。
中文在网址里是怎么编码的?
每个汉字先转成 UTF-8 字节,每个字节写成 %XX,所以「中」会变成 %E4%B8%AD。GBK 编码的老网站会得到不同的结果。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。