encoding base32 base58 base85 punycode dev-tech

超越 Base64:Base32, Base58, Base85 与 Punycode 指南

探索其它的二进制转文本编码。了解何时为比特币使用 Base58,为 PDF/Git 使用 Base85,以及为国际化域名使用 Punycode。

2026-04-11

二进制转文本编码指南:Base64、Base58、Punycode 等

在计算领域,我们经常需要通过仅支持文本的系统传输二进制数据(如图像或可执行文件)。这就是二进制转文本编码发挥作用的地方。这些方案使用一组特定的可打印字符来表示二进制数据。

1. Base 家族:效率与可读性

Base64(标准方案)

最常见的编码方式,用于电子邮件 (MIME) 和在 HTML/CSS 中嵌入图像。它使用 64 个字符。

Base32

使用 32 个字符(A-Z 和 2-7)。它常用于人工输入的代码(如 Google Authenticator 的密钥),因为它不区分大小写且避开了易混淆字符。

Base58

比特币推广,Base58 类似于 Base64,但移除了视觉上相似的字符,如 0(零)、O(大写 O)、I(大写 I)和 l(小写 L)。这使其成为钱包地址的理想选择。

Base85 (ASCII85)

主要用于 Adobe PDF 文件和 Git 补丁。它比 Base64 更高效,编码后的体积更小。


2. 专用 Web 编码

Punycode

用于在域名系统 (DNS) 中表示 Unicode 字符,因为 DNS 仅支持有限的 ASCII 字符集。这就是国际化域名 (IDN) 的实现方式。

百分号编码 (URL Encoding)

用于对 URL 中的保留字符进行编码(例如,空格变为 %20)。

Quoted-Printable

用于电子邮件中以文本为主但包含部分非 ASCII 字符的数据。它使编码后的文本对人类仍然具有可读性。


3. 遗留及小众编码

  • UUEncode:早期的 Unix 实用程序,用于通过电子邮件发送二进制文件。
  • Yenc:为取代 Usenet 新闻组中的 UUEncode 而开发,效率更高。

4. 通信与符号代码

摩斯密码 (Morse Code)

电信中使用的一种方法,将文本字符编码为点 (dot) 和划 (dash) 的标准化序列。

北约音标 (NATO Phonetic Alphabet)

应用最广泛的无线电拼写字母表(Alpha, Bravo, Charlie...),确保关键字母和数字被正确发音和理解。

盲文 (Braille)

专为视障人士设计的触觉书写系统。虽然在计算机意义上不是“二进制转文本”,但它是字符编码的一个精彩范例。


5. 经典密码(替换加密)

这些是混淆文本的简单方法,常用于谜题或基础数据掩码。

ROT13 与 ROT47

ROT13(“回转 13 位”)是一种简单的替换密码,将字母替换为字母表中其后第 13 个字母。它是自身的逆运算。ROT47 应用类似逻辑,但包含数字和符号。

凯撒密码 (Caesar Cipher)

已知最古老的替换密码,以凯撒大帝命名。它将字母在字母表中移动固定数量的位置。


对比总结

编码 基数 最佳用途
Base64 64 Web 数据、电子邮件
Base58 58 加密货币地址
Base32 32 MFA 密钥、人工输入
Punycode N/A 国际化域名
Base85 85 PDF、Git

结论

理解这些编码方案对于开发人员和安全专业人员至关重要。无论您是使用 Base64 优化 Web 性能,使用 Base58 保护区块链安全,还是使用 Punycode 确保域名兼容性,选择正确的编码都是数据完整性和系统互操作性的关键。