URL 编码解码教程:百分号编码、中文网址还原、+ 号怎么处理
URL 编码把中文和特殊字符转成 %XX,例如“在”编码为 %E5%9C%A8。参数值用“编码(组件)”,完整网址用“编码(完整 URL)”;解码时查询字符串选“+ 视为空格”,路径或 Base64 选“保留 + 号”。
网址只能使用有限的 ASCII 字符,中文、空格以及 & = ? # 等有特殊含义的字符放进网址时,需要转成 % 加两位十六进制的形式,这就是 URL 编码(百分号编码)。中文按 UTF-8 编码,每个汉字通常是 3 个字节,所以“在线”会变成 %E5%9C%A8%E7%BA%BF。URL 编码解码 可以双向转换。
五种模式
| 模式 | 作用 | 对应 JavaScript |
|---|---|---|
| 编码(组件) | 编码所有特殊字符,包括 : / ? & = | encodeURIComponent |
| 编码(完整 URL) | 保留网址结构字符 : / ? & = #,只编码中文和空格等 | encodeURI |
| 全部转十六进制 | 所有字符都转成 %XX | — |
| 解码(+ 视为空格) | 按表单和查询字符串规则把 + 当作空格 | — |
| 解码(保留 + 号) | + 保持不变 | decodeURIComponent |
操作步骤
- 选择模式:打开 URL 编码解码,在“操作”中选择需要的模式。
- 输入内容:粘贴网址、参数值或编码后的字符串。
- 查看结果:结果实时显示在下方。
- 复制使用:复制结果,粘贴到浏览器地址栏、代码或接口参数中。

组件编码和完整 URL 编码的区别
同一个网址 https://tool.gd/search?q=在线 工具&page=1:
- 编码(组件)会把 : / ? & = 都编码,结果是 https%3A%2F%2Ftool.gd%2Fsearch%3Fq%3D%E5%9C%A8%E7%BA%BF%20%E5%B7%A5%E5%85%B7%26page%3D1,只适合作为另一个网址的参数值;
- 编码(完整 URL)保留网址结构,只把中文和空格编码,结果仍是一个可以打开的网址。
拼接参数时,应该只对参数值用组件编码,例如把“在线 工具”编码成 %E5%9C%A8%E7%BA%BF%20%E5%B7%A5%E5%85%B7 再放到 q= 后面。
+ 号和空格
在表单提交和查询字符串中,空格常被编码成 +,所以解码查询字符串时应选“+ 视为空格”。但在路径或 Base64 数据中,+ 就是加号本身,这时选“保留 + 号”。真正的加号在编码后是 %2B,两种模式都会还原成 +。Base64 相关内容见 Base64 编码解码。
常见问题
网址里的 %E5%9C%A8 是什么?
这是 URL 编码后的中文。“在”的 UTF-8 编码是 E5 9C A8 三个字节,每个字节写成 % 加两位十六进制。用解码模式即可还原。
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 用于完整网址,保留 : / ? & = 等结构字符;encodeURIComponent 用于参数值,会把这些字符也编码。
解码后 + 号变成了空格怎么办?
改用“解码(保留 + 号)”模式。+ 是数据本身的一部分时(如路径或 Base64),不应把它当作空格。
URL 编码是加密吗?
不是。URL 编码可以直接还原,只是为了让字符能在网址中正确传输,不提供保密性。