一、为什么要编码?
在Internet里,E-mail的传送是只能传送US-ASCII格式的文字讯息,ASCII是7位的,而非ASCII格式的档案,在传送过程中若不先经过编码,先编成7位再传送,则在传送过程中会因为这7位元的限制而遭到拆解,拆解之后只会让收信方看到一堆乱七八糟不知所云的东西。经过编码后的资料,在传送过程中才可顺利传送,不会有“被截掉一个bit”的危险,但是收信方必须具有解码程序,将这份经过编码的东西还原,才能解读“天书”,看到寄信人要传送的真实信息。
二、MIME/BASE64编码:
BASE64编码是用的最多的邮件编码格式,具体如下:
base64和quoted-printable都属于mime(多部分( multi-part)、多媒体电子邮件和 www 超文本的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。mime定义在rfc1341中。
base64是现今在互联网上应用最多的一种编码,几乎所有的电子邮件软件头把它作为默认的二进制编码,它已经成了现今电子邮件编码的代名词。
下面是base64的一个例子,从例子中,您也可以看到base64与电子邮件的的紧密联系:
content-type: text/plain;charset="cn-gb"
content-transfer-encoding: base64
cqkjicagikg2wtlc68vjt6i088irobcncgnx99xfom1vz2fvo6yw19tgu8a619w+o6h0zwxuzxq6
ly8ymdiumteyljiwljezmjoym6ops8nusagjdqojicagicagxkq438jtvp65pnf3ytkjumh0dha6
ly9tb2dhby5izw50axvulm5lda0kcqkjrw1hawx0bzptb2dhb0aznzeubmv0dqojicagkioqkioq
kioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqicagicagicagicagicagdqoj
icagkicz/chlvmfs5mqyw7s2vlk7tpjx36oss/3by9fjvkpksso0tryyu8h0z8iqdqojicagkioq
kioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioqkioq
base64的算法很简单:它将字符流顺序放入一个 24 位的缓冲区,缺字符的地方补零。然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位(6位二进制数可表示0~63),用下面的64个字符重新表示(0就是a,1就是b...):“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/”。如果输入只有一个或两个字节,那么输出将用等号“=”补足。这可以隔断附加的信息造成编码的混乱。它每行一般为76个字符。
三、其他编码方式介绍:
1、QP编码:
quoted-printable简称qp, 一般用在email系统中。它通常用于少量文本方式的8位字符的编码,例如foxmail就用它做对主题和信体的编码。这种编码的应该是很好辨认的:它有大量的“=”。下面是它的一个例子:
mime-version: 1.0
content-transfer-encoding: quoted-printable
=a1=b6=c2=d2=c2=eb=cb=e3=b7=a8=b4=f3=c8=ab=a1=b7
=d7=f7=d5=df:xxxx=a3=ac=b0=d7=d4=c6=bb=c6=ba=d7=d5=be=a3=a8telnet://61.129.63.131:23=a3=a9
=b3=c9=d4=b1=a1=a3
=c4=aa=b8=df=c8=ed=bc=fe=b9=a4=d7=f7=ca=d2=a3=bahttp://docs.xuehu.com
emailto:yin_jie@163.net
*********************************************
* =b3=fd=c1=cb=bc=c7=d2=e4=ca=b2=c3=b4=b6=bc=b2=bb=b4=f8=d7=df=a3=ac=b3=fd=c1=cb=d7=e3=bc=a3=ca
=b2=c3=b4=b6=bc=b2=bb=c1=f4=cf=c2*
*********************************************
qp的算法可以说是最简单的也可以说是编码效率最低的(它的编码率是1:3),它是专门为了处理8位字符制定的。它的算法是:读一个字符,如果ascii码大于127,即字符的第8位是1的话,进行编码,否则忽略(有时也对7位字符编码)。
2. unicode
unicode应用中最典型的例子是:ie4以上版本对html的编码。它可以说是未来windows下唯一的字符集。但它还很不完善,而且win95和win98对它的支持还很有限,甚至它还没有一套完整的标准。不过,微软最新推出的office2000和马上就要推出的windows2000将全面支持unicode。unicode取代其他编码将会是必然的趋势。不过,在近一两年unicode并不会占主导地位,就是在占主导地位后,因为操作系统的差异,其他编码也不会立即消亡。它的中文资料可以在office2000和windows2000所带的文档中找到,它的官方网站是:http://www.unicode.org/。
3. binhex
binhex 编码是 macintosh 计算机(也就是俗称的“苹果电脑”)上用可打印字符表示/传输二进制文件的一种编码方法。它的主要用途是在电子邮件程序中attach二进制文件。大部分的电子邮件程序不支持这种格式(eudora支持),但用winzip可以进行解码。它的资料请查阅macintosh计算机带的相关文档。
4.uuencode
uuencode 是将二进制文件以文本文件方式进行编码表示、以利于基于文本传输环境中进行二进制文件的传输/交换的编码方法之一, 在邮件系统/二进制新闻组中使用频率比较高,经常用于 attach 二进制文件。
这种编码的特征是:每一行开头用“m”标志
uuencode的算法很简单,编码时它将3个字符顺序放入一个 24 位的缓冲区,缺字符的地方补零,然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,用下面的64个字符重新表示:
"`!"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_"
在文件的开头有“begin xxx 被编码的文件名”,在文件的结尾有“end”,用来标志uue文件的开始和结束。编码时,每次读取源文件的45个字符,不足45个的用“null”补足为3的整数倍(如:23补为24),然后输入目标文件一个ascii为:“32+实际读取的字符数”的字符作为每一行的开始。读取的字符编码后输入目标文件,再输入一个“换行符”。如果源文件被编码完了,那么输入“`(ascii为96)”和一个“换行符”表示编码结束。
解码时它将4个字符分别转换为4个6位字符后,截取有用的后六位放入一个 24 位的缓冲区,即得3个二进制代码。
四、其他:
1、由于邮件编/解码要消耗大量的CUP资源,所以邮件中不适合附加太大的附件程序,否则在阅读邮件和发送邮件时会导致资源消耗太多而死机。
2、由于邮件编码可能会增加容量,加上邮件头,所以实际邮件的大小比附加的附件加上邮件文本内容的大小和要大的多。
五、版权说明:以上文章参考了有关编码资料。
相关文章 | 热门文章 |
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |