🔍

首页 › 使用教程 › 开发与效率

URL 编码解码教程:百分号编码、中文网址还原、+ 号怎么处理

发布于 · 阅读约 3 分钟 · 用到的工具:URL 编码解码

一句话答案

URL 编码把中文和特殊字符转成 %XX,例如“在”编码为 %E5%9C%A8。参数值用“编码(组件)”,完整网址用“编码(完整 URL)”;解码时查询字符串选“+ 视为空格”,路径或 Base64 选“保留 + 号”。

本文目录
  1. 五种模式
  2. 操作步骤
  3. 组件编码和完整 URL 编码的区别
  4. + 号和空格
  5. 常见问题

网址只能使用有限的 ASCII 字符,中文、空格以及 & = ? # 等有特殊含义的字符放进网址时,需要转成 % 加两位十六进制的形式,这就是 URL 编码(百分号编码)。中文按 UTF-8 编码,每个汉字通常是 3 个字节,所以“在线”会变成 %E5%9C%A8%E7%BA%BF。URL 编码解码 可以双向转换。

五种模式

模式作用对应 JavaScript
编码(组件)编码所有特殊字符,包括 : / ? & =encodeURIComponent
编码(完整 URL)保留网址结构字符 : / ? & = #,只编码中文和空格等encodeURI
全部转十六进制所有字符都转成 %XX—
解码(+ 视为空格)按表单和查询字符串规则把 + 当作空格—
解码(保留 + 号)+ 保持不变decodeURIComponent

操作步骤

  1. 选择模式:打开 URL 编码解码,在“操作”中选择需要的模式。
  2. 输入内容:粘贴网址、参数值或编码后的字符串。
  3. 查看结果:结果实时显示在下方。
  4. 复制使用:复制结果,粘贴到浏览器地址栏、代码或接口参数中。
用“编码(组件)”编码一个带中文和空格的网址,: / ? & = 都被编码
用“编码(组件)”编码一个带中文和空格的网址,: / ? & = 都被编码
🌐 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 编码可以直接还原,只是为了让字符能在网址中正确传输,不提供保密性。