Base64 与 URL 编码:%E4%B8%AD 是什么

一、%E4%B8%AD 和 5Lit 都是「中」

「中」这个字按 UTF-8 编码是 3 个字节:E4 B8 AD。两种常见编码方式各走各的路:

编码方式「中」「你好」
UTF-8 字节(十六进制)E4 B8 ADE4 BD A0 E5 A5 BD
URL 编码(百分号编码)%E4%B8%AD%E4%BD%A0%E5%A5%BD
Base645Lit5L2g5aW9

规律很好记:URL 编码是给每个字节加一个 % 前缀,一个汉字 3 字节就变成 9 个字符;Base64 是把 3 字节重组成 4 个字符,所以一个汉字 3 字节 → 4 个字符。

二、Base64 的三条规则

  1. 每 3 个字节编成 4 个字符,体积约膨胀 1/3(+33%);不足 3 字节用 = 补齐:aYQ==abcYWJj
  2. 字符表是 A-Z a-z 0-9 + /,加上末尾的 = 填充;
  3. 它是编码不是加密:没有密钥、完全可逆,任何人都能还原,别用它「保护」密码或隐私数据。

Base64 的常见用途是把二进制数据塞进只能传文本的通道(邮件附件、JSON 里的图片、签名参数),重点在于「可安全传输」,不在于「保密」。

三、URL 编码保留哪些字符

encodeURIComponent 口径:字母、数字与 - _ . ! ~ * ' ( ) 保留,其余字符一律转成 %XX

  • 空格 → %20a b+ca%20b%2Bc
  • 加号 → %2B:注意加号在 URL 的 query 里有「代表空格」的历史约定,路径里必须写 %20
  • 斜杠 → %2F/path/x y%2Fpath%2Fx%20y

也就是说,做「把一段内容整段放进某个参数」这种操作时,斜杠、问号、以及连接符都会被编码,这样才能保证它不会被当成 URL 结构的一部分。

四、四个常见坑

  1. 编码不一致:「中」在 GBK 下是 D6 D0,在 UTF-8 下是 E4 B8 AD,双方编码不同就会出现「看着一样却对不上」的乱码或校验失败,现代系统统一用 UTF-8。
  2. 双重编码%25E4%25B8%25AD%E4%B8%AD 又被编码了一次(%%25),接口对接时最常见的「参数看着对、服务端解出来是乱码」。
  3. 把 Base64 当加密:直接解码就能还原,安全性为零。
  4. Base64 直接塞进 URL 参数+/= 在 URL 里有特殊含义,需要再转义;规范做法是用 URL 安全的变体(base64url),把 + / 换成 - _ 并去掉填充。

五、直接算

编码转换器:Base64、十六进制、二进制编码与解码,输入实时显示字节

URL 编码解码:整段文本与 URL 参数互转,含中文百分号编码

Base32 编码:Base32 字母表与填充规则,体积膨胀比 Base64 更大

URL 解析:拆解协议、主机、路径、查询参数,看清编码后的真实内容

本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。