WebTool

Base64 编码原理:为什么编码后体积变大 33%?

WebTool 团队 · 发布于 2026-09-04 · Base64 / 编码 / 前端

Base64 是一种把任意二进制数据编码为 64 个可打印 ASCII 字符的方案:每 3 个字节(24 bit)拆成 4 组 6 bit,各映射到一个字符,因此编码后体积固定增大 1/3。 需要快速编解码可以用本站 Base64 工具,支持中文与 Base64URL 变体。

64 个字符从哪来

A-Z(26)+ a-z(26)+ 0-9(10)+ + /(2)= 64 个,正好用 6 bit 表示。另有一个填充字符 =,不属于编码表。

编码过程(以 "Man" 为例)

步骤 内容
原始字节 M(77) a(97) n(110)
二进制 01001101 01100001 01101110
按 6 bit 分组 010011 010110 000101 101110
十进制 19 22 5 46
查表 T W F u

不足 3 字节时用 = 补齐:剩 1 字节补 ==,剩 2 字节补 =

两个高频坑

  1. 中文乱码:Base64 编码的是字节不是字符。先用 UTF-8 把字符串转成字节再编码,解码时同样按 UTF-8 还原——JavaScript 里直接 btoa("中文") 会抛错就是这个原因。
  2. URL 中的 +/:这两个字符在 URL 里有特殊含义,JWT 等场景使用 Base64URL 变体——+-/_、去掉结尾 =

常见误区

  • Base64 不是加密:任何人都能解码,不要用它"保护"敏感信息。
  • 体积代价:内嵌图片为 Base64 会大 33%,且无法被浏览器单独缓存,大图片应走独立文件。

最后更新:2026-09-04