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 字节补 =。
两个高频坑
- 中文乱码:Base64 编码的是字节不是字符。先用 UTF-8 把字符串转成字节再编码,解码时同样按 UTF-8 还原——JavaScript 里直接
btoa("中文")会抛错就是这个原因。 - URL 中的
+和/:这两个字符在 URL 里有特殊含义,JWT 等场景使用 Base64URL 变体——+→-、/→_、去掉结尾=。
常见误区
- Base64 不是加密:任何人都能解码,不要用它"保护"敏感信息。
- 体积代价:内嵌图片为 Base64 会大 33%,且无法被浏览器单独缓存,大图片应走独立文件。
最后更新:2026-09-04