一直遇到python编码的问题。常常抓取的网页数据信息,邮件收发信息,涉及到文字处理的,都时不时出现编码的问题。终于,觉得有必要认真了解下这个编码过程和出现对应的问题如何解决,在网上找了很多解释和文章,整理了下,并结合实践了一些,记录在这里。
1、常见字符集
ASCII及其扩展字符集
作用:表语英语及西欧语言。
位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。
范围:ASCII从00到7F,扩展从00到FF。
ISO-8859-1字符集
作用:扩展ASCII,表示西欧、希腊语等。
位数:8位,
范围:从00到FF,兼容ASCII字符集。
GB2312字符集
作用:国家简体中文字符集,兼容ASCII。
位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。
范围:高字节从A1到F7, 低字节从A1到FE。将高字节和低字节分别加上0XA0即可得到编码。
GB2312码是中华人民共和国国家汉字信息交换用码,1981年5月实施,通行于大陆。新加坡等地也是用此编码。
GB 2312规定任意一个图形字符都采用两个字节表示,每个字节均采用7位编码表示,习惯上称第一个字节为高字节,第二个字节为低字节。
GB 2312将代码分别表示为94个区,对应第一个字节;每个区94个位,对应第二个字节,两个字节的值分别为区号值和位号值加32(20H),因此也称为区位码。01—9为符号,数字区,16-87区为汉字区,10-15区,88-94区是有待进一步标准化的空白区。GB 2312最多能表示6763个汉字。编码范围为2121H-777EH,与ASCII有重叠,通行的方法是将GB码两个字节的最高位置1以示区别。
BIG5字符集
作用:统一繁体字编码。
位数:使用2个字节表示,表示13053个汉字。
范围:高字节从A1到F9,低字节从40到7E,A1到FE。
BIG-5 码是通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。它并不是一个法定的编码方案,但它广泛地被应用于电脑业,尤其是国际互联网中,从而成为一种事实上的行业标准。它包括440个符号,一级汉字5401个,二级汉字7652个,共计13060个汉字。BIG5是一个双字节编码方案,其第一字节的值在16进制的A0-7E之间,第二字节在A1-FE之间。一次其第一个字节的最高位是1,第二字节的最高位可能是1,也可能是0。
GBK字符集
作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。
位数:使用2个字节表示,可表示21886个字符。
范围:高字节从81到FE,低字节从40到FE。
GBK 向下与GB 2312编码兼容,向上支持ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的标准,共收录汉字21003个,符号883个,并提供1894个造字码位,简,繁体字融为一库。
GB18030字符集
作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。
位数:它采用变字节表示(1 ASCII,2,4字节)。可表示27484个文字。
范围:1字节从00到7F; 2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39。
GB 18030编码标准由信息产业部和国家质量技术监督局在2000年3月日联合发布,并作为国家标准在2001年的1月强制执行。
GB 18030是在原来GB2312-1980标准和GBK编码标准的基础上进行的扩充,增加了四字节部分的编码。它可以完全映射ISO 10646的基本平面和所有辅助平面,共有150多万码位。在ISO 10646的基本平面内,它在原来的2万多汉字的基础上增加了7000多个汉字的码位和字形。它主要目的是为了解决一些生,难,偏字的问题,以及适应出版,邮政,户政