python2001文本编码

编码

编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。

1.ascii
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符 。

ascii码表
2. utf-8
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
UCS字符U+0000到U+007F(ASCII)被编码为字节0×00到0x7F(ASCIⅡ兼容)。这意味着只包含7位ASCIl字符的文件在ASCIⅡ和UTF-8两种编码方式下是一样的。
所有大于0x007F的UCS字符被编码为一个有多个字节的串,每个字节都有标记位集。因此,ASCIl字节(0x00-0x7F)不可能作为任何其他字符的一部分。表示非ASCIl字符的多字节串的第一个字节总是在0xC0到0XFD的范围里,并指出这个字符包含多少个字节。多字节串的其余字节都在0x80到0xBF范围里。这使得重新同步非常容易,并使编码无国界,且很少受丢失字节的影响。
UTF-8编码字符理论上可以最多到6个字节长,然而16位BMP字符最多只用到3字节长,Bigendian UCS-4字节串的排列顺序是预定的,字节0xFE和OxFF在UTF-8编码中从未用到。
UTF-8使用1~4字节为每个字符编码:
·一个US-ASCIl字符只需1字节编码(Unicode范围由U+0000~U+007F)。
·带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码(Unicode范围由U+0080~U+07FF)。
·其他语言的字符(包括中日韩文字、东南亚文字、中东文字等)包含了大部分常用字,使用3字节编码。
·其他极少使用的语言字符使用4字节编码。

  1. gbk gb2314
    GBK码是GB码的扩展字符编码,对多达2万多的简繁汉字进行了编码,简体版的Win95和Win98都是使用GBK作系统内码。
    从实际运用来看,微软自win95简体中文版开始,系统就采用GBK代码,它包括了TrueType宋体、黑体两种GBK字库(北京中易电子公司提供),可以用于显示和打印,并提供了四种GBK汉字的输入法。此外,浏览器IE4.0简体、繁体中文版内部提供了一个GBK-BIG5代码双向转换功能。此外,微软公司为IE提供的语言包中,简体中文支持(Simplified Chinese Language Support Kit)的两种字库宋体、黑体,也是GBK汉字(珠海四通电脑排版系统开发公司提供)。其他一些中文字库生产厂商,也开始提供TrueType或PostScript GBK字库。
    许多外挂式的中文平台,如南极星、四通利方(Richwin)等,提供GBK码的支持,包括字库、输入法和GBK与其他中文代码的转化器。
    互联网方面,许多网站网页使用GBK代码。
    但是多数搜索引擎都不能很好的支持GBK汉字搜索,大陆地区的搜索引擎有些能不完善的支持GBK汉字检索。
    其实,GBK是又一个汉字编码标准,全称《汉字内码扩展规范》(Chinese Internatial Code Specification),1995年颁布。GB是国标,K是汉字“扩展”的汉语拼音第一个字母。
    GBK向下与GB-2312编码兼容,向上支持ISO 10646.1国际标准,是前者向后者过渡的一个承启标准。
    GBK规范收录了ISO 10646.1中的全部CJK汉字和符号,并有所补充。具体包括:GB 2312中的全部汉字、非汉字符号;GB 13000.1中的其他CJK汉字。以上合计20902个GB化汉字;《简化总表中》未收入GB 13000.1的52个汉字;《康熙字典》以及《辞海》中未被收入GB 13000.1的28个部首及重要构件;13个汉字结构符;BIG-5中未被GB 2312收入、但存在于GB 13000.1的139个图形符号;GB 12345增补的6个拼音符号;GB 12345增补的19个竖排图形符号(GB 12345较GB 2312增补竖排标点符号29个,其中10个未被GB 13000.1收入,故GBK亦不收);从GB 13000.1的CJK兼容区挑选出的21个汉字;GB 13000.1收入的31个IBM OS/2专用符号。GBK亦采用双字节表示,总体编码范围为0x81400xFEFE之间,首字节在0x810xFE之间,尾字节在0x40~0xFE之间,剔除0x××7F一条线,总计23940个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。

  2. 万国码 Unicode
    于Unicode我们需要追溯一下它产生的渊源。
    当计算机普及到东亚时,遇到了使用表意字符而非字母语言的中、日、韩等国家。在这些国家使用的语言中常用字符多达几千个,而原来字符采用的是单字节编码,一张代码页中最多容纳的字符只有2^8=256个,对于使用表意字符的语言实在无能为力。既然一个字节不够,自然人们就采用两个字节,所以出现了使用双字节编码的字符集(DBCS)。不过双字节字符集中虽然表意字符使用了两个字节编码,但其中的ASCII码和日文片假名等仍用单字节表示,如此一来给程序员带来了不小的麻烦,因为每当涉及到DBCS字符串的处理时,总是要判断当中的一个字节到底表示的是一个字符还是半个字符,如果是半个字符,那是前一半还是后一半?由此可见DBCS并不是一种非常好的解决方案。
    人们在不断寻找这更好的字符编码方案,最后的结果就是Unicode诞生了。Unicode其实就是宽字节字符集,它对每个字符都固定使用两个字节即16位表示,于是当处理字符时,不必担心只处理半个字符。
    Unicode在网络、Windows系统和很多大型软件中得到应用。

发布了7 篇原创文章 · 获赞 0 · 访问量 82

猜你喜欢

转载自blog.csdn.net/weixin_45359160/article/details/104287613
今日推荐