打开一封QQ邮箱,显示邮件原文,你将会看到如下这样的信息:
This is a multi-part message in MIME format. ------=_NextPart_4CA2B3AA_08661D78_10BF6743 Content-Type:text/html; charset="utf-8" Content-Transfer-Encoding:base64说明这封邮件的内容是64位编码的。
什么是Base64?
Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现问题。所以base64位编码才存在。
Base64编码的原理
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。
字符串“张3”
11010101 11000101 00110011
转化成base64位编码的内容是:
00110101 00011100 00010100 00110011
最后参看base64编码对应的字符表:
Base64 编码表 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Value | Char | Value | Char | Value | Char | Value | Char | |||
0 | A | 16 | Q | 32 | g | 48 | w | |||
1 | B | 17 | R |