免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.MIME邮件的编码方式由于每个 ASCII码字符只占用一个字节(8个bit位),且最高bit位总为0,即ASCII码字符中的有真正意义的信息只是后面的7个低bit位,而传统的 SMTP协议又是基于ASCII码字符设计的,因此,一些基于传统SMTP协议设计的SMTP服务器在处理邮件内容时只取出每个字节中的7个低bit位进 行处理,而将最高bit位忽略不计。显然,这样的SMTP服务器在处理包含有非ASCII码字符的邮件内容时,会出现严重的问题,这就限制了邮件中只能出现英文的ASCII码字符,而不能出现中文字符或二进制数据。为了能够在邮件 内容中包含中文、图像或声音等非ASCII字符的数据,人们想到了采用某种编码方式将非ASCII字符的数据转换成可打印的ASCII字符后再发送,邮件 阅读程序则按照相应的解码方式从邮件中还原出原始数据即可,比较常用的两种邮件编码方式为BASE64和Quoted-printable。后来的扩展 SMTP协议允许直接在邮件中传递二进制数据,而不用对它们进行邮件编码,人们将这种没有进行邮件编码的二进制数据的邮件内容称为8bit编码,为了与此 相区别,人们将没有进行邮件编码的纯ASCII码字符的邮件称为7bit编码。MIME消息体的邮件编码方式通过MIME消息头中的Content- Transfer- Encoding头字段指定,每种邮件编码方式的介绍如下: 7Bit 指消息体内容全部是没有经过编码的ASCII字符。 8Bit 指消息体内容是没有经过编码的原始数据,且其中包含有非ASCII字符的数据。现在的邮件服务器基本上都支持8Bit编码,使用支持8Bit编码的邮件服务器可以简化邮件的处理过程。 BASE64 Base64是将二进制数据转换成可打印的ASCII字符的一种最常见的编码方式,它的基本原理是将一组连续的字节数据按6个bit位进行分组,然后对每组数据用一个ASCII字符来表示。6个bit位最多能表示2664个数值,因此可以使用64个ASCII字符来对应这64个数值,这64个ASCII字符为: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 其中每个字符表示的数值就是该字符在上面的排列中的索引号,索引号从0开始编号。假设在内存中有如下三个连续的字节数据:0110,0001 0110,0010 0110,0011 将它们按6个bit位进行分组后的形式如下: 0110,00 01,0110, 0010,01 10,0011 分组后得到了四组数据,每组数据对应的十进制数值分别为24、22、9、35,它们分别对应Y、W、J、j这四个字符,所以,对0110,0001 0110,0010 0110,0011这三个字节的数据进行BASE64编码后的结果是“YWJj”。 BASE64编码要求把3个8位字节(即24个bit)的数据转化为4个6位字节(也是24个bit)的数据,如果原来的8位字节数据的字节个数不能被3整除,其余数只能是1或2,那么如何对余下的1个或2个8位字节数据进行处理呢?对于这种情况,仍然按6个bit位对剩余的字节进行分组,在最后不够6个 bit位的内容后面添加几个为0的bit位来凑成6个bit位,例如,如果最后剩下的一个8位字节的内容如下:0110,0001 对它进行分组后的结果如下: 0110,00 01,0000 其中用黑斜体标识的0为填充的bit位,所以,最后剩下的这个字节的BASE64编码结果为“YQ”。BASE64编码还有规定,如果编码后的整个结果文 本的字符个数不是4的整数倍,那么需要在最后填充“=”字符来凑成4的倍数,所以,在最后这个字节编码的结果后面还要添加两个“=”字符,即 “YQ=”。显然,如果最后剩下两个8位字节的内容,它可以被编码成三个字符,最后还需要添加一个“=”字符。对一大段数据进行BASE64编码时,可 以在编码结果中的适当位置加入回车换行,MIME规范建议BASE64编码结果中的每行最多76个字符。 Quoted-printable Quoted-printable也是一种将二进制数据转换成可打印的ASCII字符的编码方式,它对ASCII字符不进行转换,只对非ASCII字符的 数据进行编码转化。每个非ASCII字符的字节数据,都被转换成一个=号后跟这个字节的十六进制数据,例如,“ab中国”的Quoted- printable编码结果为“ab=d6=d0=b9= fa”。显然,由于=号在Quoted-printable编码中具有的特殊意义,所以,原始数据中的=号字符也需要进行编码转换,用“=3d”表示。 对一大段数据进行Quoted-printable编码时,可以在编码结果中的适当位置加入回车换行,在回车换行前需要额外再加入一个“=”字符,以表示 后面的换行是因编码而造成的软回车,而非原始数据中原有的回车换行。例如,对于下面一段Quoted-printable编码后的数据:=D5=E2=CA=C7=CD=A8=D0=C5=B5=C4=B3=CC=D0=F2, =C7=EB=D6=B8=BD=CC! 在第一行末尾的“=”字符和换行,都是由于编码后生成的。 2.常用字符集编码 ASCII ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。 只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。 GB2312 GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。 区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。它将收录的汉字分成两级:第一级是常用汉字计 3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉字 是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。 GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。 GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。 EUC-CN可以理解为GB2312的别名,和GB2312完全相同。 区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这种字符集的编码。HZ和ISO-2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。区位码和GB2312编码的关系有点像 Unicode和UTF-8。 GBK GBK 编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的 汉字部首符号、竖排标点符号等字符。 GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是07F的组合。高字节范围是081-0xFE,低字节范围是0x40-7E和0x80-0xFE。 低字节是0x40-0x7E的GBK字符有一定特殊性,因为这些字符占用了ASCII码的位置,这样会给一些系统带来麻烦。 有些系统中用0x40-0x7E中的字符(如“|”)做特殊符号,在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节,这样就会造成错误判断。在支持GB2312的环境下就不存在这个问题。需要注意的是支持GBK的环境中小于0x80的某个字节未必就 是ASCII符号;另外就是最好选用小于040的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另一半。Big5编码中也 存在相应问题。 CP936和GBK的有些许差别,绝大多数情况下可以把CP936当作GBK的别名。 GB18030 GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。GB18030收录了所有Unicode3.1中的字符,包括中国少数民族字符,GBK不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内。 GBK和GB2312都是双字节等宽编码,如果算上和ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码。GB18030编码是变长编码,有单字节、双字节和四字节三种方式。 GB18030 的单字节编码范围是0x00-0x7F,完全等同与ASCII;双字节编码的范围和GBK相同,高字节是0x81-0xFE,低字节的编码范围是0x40 -0x7E和0x80-FE;四字节编码中第一、三字节的编码范围是0x81-0xFE,二、四字节是0x30-0x39。 Windows 中CP936代码页使用0x80来表示欧元符号,而在GB18030编码中没有使用0x80编码位,用其他位置来表示欧元符号。这可以理解为是 GB18030向下兼容性上的一点小问题;也可以理解为0x80是CP936对GBK的扩展,而GB18030只是和GBK兼容良好。 HZ-GB-2312 HZ是GB码的变体,只用每个字节的首7-bit作编码(即ANSI的首128个字符),常用于网络资料传送。是中国留学生为了使汉字信息能在网络上直接传送而产生的。因目前大多数(西方)网络系统为位,最高位被屏蔽掉,因此 GB 码无法被直接传输。 Big5 Big5是在台湾和香港等地广为使用的计算机汉字编码方案,使用的是繁体字,因最高位被置,所以也不能直接在位的网络系统中传输。 unicode(UTF-16) 每一种语言的不同的编码页,增加了那些需要支持不同语言的软件的复杂度。因而人们制定了一个世界标准,叫做unicode。unicode为每个字符提供 了唯一的特定数值,不论在什么平台上、不论在什么软件中,也不论什么语言。也就是说,它世界上使用的所有字符都列出来,并给每一个字符一个唯一特定数值。 Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题 (implantation head-aches),尤其在那些基于网络的应用中。已有的软件必须做大量的工作来程序16位的数据。 因 此,Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF8中,字符是 以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF8保留了ASCII字符的编码做为它的一部分,例如,在UTF8 和ASCII中,“A”的编码都是0x41. UTF16和UTF32分别是Unicode的16位和32位编码方式。考虑到最初的目的,通常说的Unicode就是指UTF-16。在讨论Unicode时,搞清楚哪种编码方式非常重要。 UTF-8 Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三 个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显 示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。 GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025科新动力电池系统(湖北)有限公司招聘14人笔试历年参考题库附带答案详解
- 2025年青岛科技大学公开招聘人员(4人)考试笔试模拟试题及答案解析
- 2025湖北十堰市武当山文旅集团招聘核减岗位数量笔试历年参考题库附带答案详解
- 2025河南开封国有资产投资经营集团有限公司招聘3人笔试历年参考题库附带答案详解
- 2025春季北京华科软科技有限公司招聘1人笔试历年参考题库附带答案详解
- 2025下半年上海市闵行区区管国企招聘8人(第二批)笔试历年参考题库附带答案详解
- 2025年南宁市江南区保安员招聘考试题库附答案解析
- 糖尿病视网膜病变(DR)激光治疗与随访方案
- 2025年江苏省宿迁市宿城区辅警招聘考试题库附答案解析
- 2025年锡林郭勒盟东乌珠穆沁旗辅警招聘考试题库附答案解析
- 贵州省2025年高二学业水平合格性考试英语试卷及答案
- 污水处理厂自动化升级调研报告
- 大学生护理生涯规划书
- 卧床老年人更换床单课件
- 后勤的题目及答案
- Unit1 Lesson2 What will I be课件(内嵌视频)冀教版(2024)八年级上册
- 实施指南《G B-T36483-2018悬索桥用主缆平行钢丝索股》实施指南
- GB/T 20805-2025饲料中酸性洗涤木质素(ADL)的测定
- 2025年信息安全行业投资趋势与盈利模式研究报告
- 小学数学期末成绩质量分析报告
- 2025-2026学年苏教版(2024)小学科学三年级上册(全册)课时练习及答案(附目录P102)
评论
0/150
提交评论