首页 / 教程文章 / URL 编码(百分号编码)完全指南:为什么中文会变成 %E4%BD%A0

URL 编码(百分号编码)完全指南:为什么中文会变成 %E4%BD%A0

发布于 2026-08-18 10:58:23 · 9 阅读 · 标签:URL编码,百分号编码,urlencode,UTF-8,编解码

把中文复制到浏览器地址栏,再复制出来就变成了 %E4%BD%A0%E5%A5%BD 这样的乱码。这不是乱码,是 URL 编码(也叫百分号编码)。本文讲清它的原理和规则。

一、为什么 URL 需要编码

URL 的设计只允许使用 ASCII 字符集里的安全字符(字母、数字和少数符号)。但现实中 URL 里会出现:

解决办法:把这些不安全的字符统一转成 % + 两位十六进制,这就是 URL 编码。

二、编码规则:% + 十六进制

编码分两步:

  1. 把字符按 UTF-8 编码成字节序列
  2. 每个字节写成 % + 两位十六进制

以「你」为例:

  1. 「你」的 UTF-8 编码是 3 个字节:E4 BD A0
  2. 每个字节加 %%E4%BD%A0

所以「你好」(两个汉字,UTF-8 各 3 字节)编码后是 6 段:%E4%BD%A0%E5%A5%BD。这就是中文 URL 那么长的原因——一个汉字 = 9 个字符

三、哪些字符必须编码

URL 字符分三类:

四、常见字符编码对照

五、三个常见踩坑

六、在线编解码

手动算十六进制太麻烦,用本站URL 编解码工具:粘贴中文一键编码成百分号形式,或把 %XX 还原成原文,实时出结果。

常见问题

URL 编码和 Base64 是一回事吗?

不是。URL 编码解决「字符能否安全放进 URL」,Base64 解决「二进制能否用文本传输」。用途完全不同,别混用。

为什么有的中文 URL 不编码也能用?

现代浏览器会自动帮你在地址栏显示中文、提交时编码。肉眼看到的中文,实际传输时已变成 %XX。程序里拼接 URL 建议始终显式编码。

整个 URL 都要编码吗?

不是。只编码参数值等数据部分,协议、域名、路径分隔符 /、查询分隔符 ?&= 这些结构符号不能编。用 encodeURIComponent(编码值)而非 escape 整个 URL。

更多文章