Content-Transfer-Encoding: base64 (或qutoed Printable或8bit)
Content-Type: text/plain; charset=“us-ascii”
其中第一句说明此邮件传输时所用的编码,是base64还是qutoed Printable或是8bit,第二句Content-Type说明邮件的内容类型是纯文本还是或是超文本文档,charset说明信中文字所用的字符集。
有us-ascii,ISO-8859-1,GB2312等。为什麽邮件传输时需要编码呢?因为最早的E-mail是UNIX系统中出现的,当时的E-mail只能传送ASCII码(美国国家标准信息交换码)格式的文字信息,ASCII码是7位代码,非ASCII码格式的文件在传送过程中就需要先编成7位的ASCII代码, 然后才能通过 E-mail进行传送;如果不经过编码,则在传送过程中会因为ASCII码7位的限制而被分解,分解之后只会让收信方看到一堆杂乱的ASCII字符。经过编码后的文件,在传送过程中可顺利传送,不会有“被截掉一位”的危险。但是收信方必须具有相应的解码程序,将这份经过编码的东西还原,才能看到发信人要传送的信息内容 。而我们的中文是8位代码编码的文字,并不是标准的ASCII码格式,由于在国内中文是通行的文字,所以大部分的国内邮件服务器都已能够处理GB内码的文件,因而不需要做这种编码/解码的 *** 作,但如果要送中文邮件到国外或使用国外的邮件服务器传送邮件,就需要经过这种转换才能传送,因为国外的邮件服务器是无法辨认中文内码的。中文码在经过一些不支持中文内码的传递主机时,依然会被截掉一位,造成文件乱码无法读取。而经过编码的中文邮件,收信人收到后将文件解码还原,也需要有中文系统才能看所写的中文信息。
电子邮件中常用的有三种编码标准
一、UU编码(Unix-to-Unix encoding)
uuencode和uudecode原来是unix系统中使用的编码和解码程序,基于Windows的类似程序有wincode和winzip等。 wincode除支持UU编码外也支持MIME、Binhex等编码格式,应用范围颇为广泛。
以上介绍的UU编码并非只能编中文文字。任何你要寄送的文件包括gif,exe等二进制文件都可以按照编码→发送→收信方收信→解码还原的步骤传送。这种编码方法现在虽已不常用,但OE,Foxmail等绝大多数邮件系统都支持。
二、MIME标准(Multipurpose Internet Mail Extentions)
UU编码解决了E-mail只能传送ASCII文件的问题 。但这种方式其实并不是很方便,因而又发展出一种新的编码标准,其全名是Multipurpose Internet Mail Extentions,一般译作“多媒体邮件传送模式”。
顾名思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式的文件一起送出。
MIME标准现已成为Internet电子邮件的主流。它的好处是以物件作为包装方式,可将多种不同文件一起打包后传送。发信人只要将要传送的文件选好,它在传送时即时编码,收信人的软件收到也是即时解码还原,完全自动化,非常方便。当然先决条件是双方的软件都必须具有这种功能,要不然发信人很方便地把信送出去了,但收信人的软件如果没有这种功能,无法把它还原,看到的也就是一大堆乱码了。使用这种方式,用户根本不需要知道它是如何编码/解码的。即使只是用文字写的信,一样是打好包便寄出。如果是要寄多媒体文件,只要做选文件的动作,选完后寄出,其余的工作由电子邮件软件自动完成。 由于MIME的方便性,愈来愈多的电子邮件软件采用这种方式。(我们现在最常使用的电子邮件软件OutlookExpress、Eudora、Foxmail和一些网上在线邮局如163、263等就是采用MIME方式,所以我们才能如此轻松地收发电子邮件。
MIME定义的是一种规格,也可以说是一种统称。 其实能够符合这种规格的编码方式并不是单一的一种,只要符合这种MIME规格便可顺利传送。MIME定义两种编码方式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复编码,仅将8位的数据转成7位。QP编码适用于非ASCII码的文字内容,例如我们的中文文件。而Base64的编码规则,是将整个文件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用 QP或Base64来解码。QP编码的方式,是将一个字节用两个16进制数值表示,然后在前面加“ =”。所以我们看到经过QP编码后 的文字通常是这个样子:
=A4j=AEa=A6n=A1I=A7=DA=AC0=B1=E7=A9s=A7g=A 1A=AB=DC=B0=AA=B而Base64编码是将连续的三个字符(二进制共24位)分解为四个六位二进制串, 每个串的大小就限定在0-63之间, 分别用ANSI字符'A'-'Z','a'-'z','0'-'9','+','/'代替; 如果最后的字符剩下一个, 补零后分解为两个六位二进制串, 编码的最后加进两个'='字符; 如果最后字符剩下两个,补零后分解为三个六位二进制串, 编码的最后加进一个'='字符。编码后的文字通常是: pGquYaZuoUmn2qxPseepc6dnoUGr3LCqv70ms773t3ymYqa5plakaq5hptu,如果你使用支持MIME标准的电子邮件软件,那么在收发信件的过程中是看不到这些乱七八糟的字符的。但如果很不幸,收信人没有这种支持MIME的软件,他看到的东西就是上面那一大段符号了。不过别急,你仍然可以先将这份“天书”存档,然后使用一些解码软件把它翻译回来。
三、Binhex编码
Binhex的编码方式常用于Mac机器,在PC上是较少使用的一种编码方式。一般PC上的电子邮件软件,亦多数支持MIME的规格,很少有支持Binhex格式。在常用的电子邮件软件中,唯Eudora具有这种功能,可直接解读Binhex的编码,如果你收到了这种由Binhex所编码的邮件,而且你的mail软件并不是Eudora或其他支持Binhex格式的软件,那也得用一个解读Binhex的程序解码。有一个共享软件Binhex3exe具有这个功能,它在许多FTP站点都能找到。
在Windows下,你还可以用上面介绍的wincode来解码。本文介绍的UU编码、MIME以及Binhex都可以用它来处理。但可惜的是,对于MIME,它只处理Base64的编码。如果能再加上QP的功能,真的可以靠它走遍天下了。
在MIME几乎已成标准规格的现在,用一套支持MIME的软件来做收发E-mail的工作,这些编码/解码工作就会自动完成,不会给你带来麻烦。如Foxmail30支持MIME和UUCode两种编码方式,但MIME只支持8位(8bit)编码方式。但他支持us-ascii,ISO-8859-1,GB2312三种字符集,且它只能以纯文本方式传送正文。而OE则支持UUCode和MIME中的Base64和QP两种编码方式,除此之外他还支持邮件正文以HTML方式传送。这就是我们用OE看到的有着漂亮背景的邮件。 当然如果你收到的八位编码的邮件,不幸中途被截了一位,造成若是不是上述Base64或QP样的乱码,且是纯中文的话,也可以通过编程序来补上最高位的方法恢复,如果是中英混合的,就只能让对方重发一遍了。
现在我们知道邮件的乱码是如何产生的了,如果遇到的话,相信你也可信“码”“邮”缰,游刃有余了。(信“码”“邮”缰在电子邮件中遇见乱码是一件让人感到很恼火的事,尤其是遇到有重要内容的邮件则更是损失惨重。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)