【正确答案】通用因特网邮件扩充MIME并非改变或取代SMTP。MIME继续使用RFC822格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在已有的电子邮件和协议下传送。 quoted-printable编码方法适用于所传送的数据中只有少量的非ASCII码(例如汉字)的情况。这种编码的要点是对于所有可打印的ASCII码,除特殊字符等号“=”外,都不改变。等号“=”和不可打印的ASCII码以及非ASCII码的数据的编码方式是:先将每个字节的二进制代码用两个十六进制数字表示,然后在前面加上一个等号“=”。例如,汉字“系统”的二进制编码是:11001111 10110101 11001101 10110011(共有32位,但这四个字节都不是ASCII码),其十六进制数字表示为:CFB5CDB3。用quoted-printable编码表示为:=CF=B5=CD=B3,把这12个字符用可打印的ASCII编码,其二进制编码需要96位,和原来的32位相比,开销达200%。再如,等号“=”的二进制代码是00111101,即十六进制的3D,因此等号“=”的quoted-printable编码为“=3D”。 对于任意的二进制文件,可用base64编码。这种编码方法是先将二进制代码划分为一个24位长的单元,然后将每一个24位单元划分为4个6位组。每一个6位组按以下方法转换成ASCII码。6位的二进制代码共有64种不同的值,从0到63。用“A”表示0,用“B”表示1,等等。26个大写字母排列完毕后,接下去再排26个小写字母,再后面是10个数字(0—9),最后用“+”表示62,用“/”表示63。再用两个连在一起的等号“==”和一个等号“=”分别表示最后一组的代码只有8位或16位。例如,假设有二进制代码,共24位:01001001 001100010111100l。先划分为4个6位组,即010010 010011 000101 111001。对应的base64编码为:STF5。最后,将STF5用ASCII编码发送,即01010011 01010100 01000110 00110101。显然,24位的二进制代码采用base64编码后成了32位,开销为25%。然而,当需要传送的数据大部分都是ASCII码时,最好还是采用quoted-printable编码。
【答案解析】