Base64 是最常见的二进制转文本编码,但它不是唯一选择。Base32、Base58、Base62 分别针对不同场景做了取舍:有的为了让人读得清楚,有的为了塞进 URL 不用转义,有的为了避免容易看错的字符。
计算机里的二进制数据(图片、文件、加密后的密文)包含大量不可打印字符,直接放进 URL、JSON 文本、邮件正文里会出问题(比如被截断、转义出错)。解决方法是把二进制数据"翻译"成一组安全的可打印字符——这就是 Base 系列编码的共同目的。它们的区别在于用了多大的字符集、为了什么场景做了什么取舍。
Base64 用 64 个字符(A-Z a-z 0-9 + /),编码密度高(3 字节变 4 字符),是通用场景的默认选择——具体原理见 Base64 深度解析。
Base32 只用 32 个字符(通常是 A-Z 加 2-7,不区分大小写),常见于:
选它的原因很直接:字符集里没有容易混淆的字母(比如排除了 0、1、8、9 这类容易和字母 O、I、B、g 看混的数字),适合需要人眼辨认、手动输入的场景。代价是编码密度比 Base64 低(5 字节变 8 字符),生成的字符串更长。
Base58 在 Base64 的基础上,进一步去掉了这几个字符:
0(数字零)和 O(大写字母 O)——容易看混I(大写字母 I)和 l(小写字母 L)——容易看混+ 和 /——在 URL 和文件名里有特殊含义,容易出问题比特币地址、IPFS 哈希都用 Base58,因为这些标识符经常需要手动抄写、口头念给别人、打印在纸钱包上——任何一个字符看错都可能导致资产转错地址,去掉容易混淆的字符能大幅降低人为出错率。
Base62 只用字母和数字(A-Z a-z 0-9,共 62 个字符),不含任何符号。它的定位很窄但很实用:把一个数字 ID 编码成短字符串,且保证在 URL 里不需要任何转义。
典型场景是短链接服务:把数据库自增 ID(比如 123456789)转成 Base62 字符串(比如 8M0kX),生成的短链接 https://xx.co/8M0kX 干净、短、不含特殊字符。
| 字符集大小 | 编码密度 | 典型场景 | |
|---|---|---|---|
| Base64 | 64 | 高(3→4) | 通用场景,Data URL、邮件附件 |
| Base32 | 32 | 低(5→8) | TOTP 密钥、需要手动输入的场景 |
| Base58 | 58 | 中 | 比特币/区块链地址,需要手抄的标识符 |
| Base62 | 62 | 较高 | URL 短链接,纯字母数字的 ID 编码 |
一句话总结:字符集越小、去掉的易混字符越多,可读性和抗出错能力越强,但字符串会变长——四种编码本质上都是在"编码密度"和"人类友好度"之间选一个平衡点,没有哪个绝对更好,取决于最终是给机器读还是给人读。
在线编解码工具:Base32/58/62/100编码解码