编码方式
Base64
把任意二进制数据安全地表示成只含可打印 ASCII 字符的文本,便于在只支持文本的协议里传输,比如邮件 SMTP、HTTP、JSON 嵌入二进制、证书/密钥文本化等。它不是加密,也不是压缩;任何人都可以轻易还原
核心原理:3 字节变 4 字符
3 个字节 = 24 bit。把这 24 bit 切成 4 组,每组 6 bit。每个 6 bit 的值范围是 0~63,再映射到 64 个字符表中: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
0~25->A~Z26~51->a~z52~61->0~962->+63->/
编码过程
Base64 直接处理输入字节,不要求输入原本是 ASCII 文本。每 3 个字节分为 4 组 6 bit,再映射到字符表。
- 将每3个字节作为一组,3个字节一共24个二进制位
- 将这24个二进制位分为4组,每个组有6个二进制位
- 在每组的6个二进制位前面补两个00,扩展成32个二进制位,即四个字节
- 每个字节对应的将是一个小于64的数字,即为字符编号,再根据字符索引关系表,每个字符编号对应一个字符,就得到了Base64编码字符
不足 3 字节时,最后一组右侧补零后编码:剩 1 字节得到 2 个字符并补 ==,剩 2 字节得到 3 个字符并补 =。这是标准带填充的 Base64;某些协议会另行规定省略填充。

UTF-8
协议
SMTP协议
用于电子邮件传输的协议
HTTP协议
参考:RFC 4648。