URL 编码和解码:什么是 URL 编码及如何在线处理

工具 次閱讀

什么是 URL 编码?

URL(统一资源定位符)只允许使用特定的 ASCII 字符。当 URL 中包含空格、中文、特殊符号等不被允许的字符时,必须将其转换为 %XX 格式——这个过程就叫 URL 编码(也叫百分号编码,Percent-Encoding)。

例如:hello world 编码后变为 hello%20world,因为空格的 ASCII 十六进制值是 20

为什么需要 URL 编码?

  • 空格不合法:URL 中不允许有空格
  • 特殊字符有歧义&=? 在 URL 中有特殊含义,若出现在参数值中需要编码
  • 中文/非 ASCII 字符:URL 只支持 ASCII,中文需先转为 UTF-8 字节再做百分号编码

在线 URL 编码 / 解码工具

使用 tool.tl URL 编码工具URL 解码工具,直接粘贴文本即可转换,支持批量处理:

  1. 打开 tool.tl/url-encoder(编码)或 tool.tl/url-decoder(解码)
  2. 在输入框粘贴需要转换的文本
  3. 结果实时显示在输出框中
  4. 点击「复制」即可使用

常见 URL 编码对照表

原始字符URL 编码说明
空格%20 或 +在查询参数中也常用 +
!%21
#%23URL 中 # 标识锚点
%%25% 本身需要编码
&%26分隔查询参数
/%2F路径分隔符
:%3A
=%3D参数键值分隔符
?%3F查询字符串开始标志
@%40
中(UTF-8)%E4%B8%AD中文先转 UTF-8 字节再编码

URL 编码 vs Base64 编码:该用哪个?

对比项URL 编码Base64 编码
用途在 URL 中传递特殊字符将二进制数据编码为文本
输出字符%XX 格式A-Z、a-z、0-9、+/=
可读性较高(部分字符保留)低(完全不可读)
长度略长于原文约增加 33%
典型场景查询参数、表单提交图片/文件嵌入、API 传输

开发中常见的 URL 编码问题

双重编码

如果对已经编码过的 URL 再次编码,%20 会变成 %2520(% 被编码为 %25)。解码时需要注意是否被双重编码。

+ 与 %20 的区别

在 URL 查询参数中,+ 表示空格(application/x-www-form-urlencoded 格式),而 %20 是标准 URL 编码空格。在路径部分应使用 %20,不要用 +

中文 URL 编码

中文字符先转为 UTF-8 字节序列,每个字节再用 %XX 表示。例如「中」的 UTF-8 编码为 E4 B8 AD,所以 URL 编码为 %E4%B8%AD

常见问题(FAQ)

Q:URL 中的 %20 和 + 哪个表示空格?

A:两者都表示空格,但使用场景不同。%20 是标准 URL 编码,可以在 URL 的任何部分使用;+ 只在 HTML 表单提交(application/x-www-form-urlencoded)的查询参数中表示空格。

Q:JavaScript 中如何编码 URL?

A:用 encodeURIComponent() 编码单个参数值,用 encodeURI() 编码整个 URL(保留 ://?&= 等结构字符)。解码对应使用 decodeURIComponent()decodeURI()

Q:为什么有些 URL 含有中文,有些没有?

A:现代浏览器支持显示 IDN(国际化域名)和 Unicode 路径,会将 URL 编码后的中文在地址栏中还原为可读形式展示。实际传输时仍然使用编码格式。