快捷搜索:  汽车  科技

python使用的字符编码(之Python中常用的字符编码)

python使用的字符编码(之Python中常用的字符编码)Unicode 当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U 0639表示阿拉伯字母Ain,U 0041表示英语的大写字母A,U 4E25表示汉字严。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准 包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。非 ASCII 编码英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。二. U

python使用的字符编码(之Python中常用的字符编码)(1)

我们在写程序的时候经常遇到转码的问题,或者乱码的问题。这本文章就把经常遇到的ASCII,UNICODE 和 UTF-8给大家梳理一下。

一、ASCII 码

ASCII(美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,对英语字符与二进制位之间的关系,它是现今最通用的单字节编码系统。

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。

非 ASCII 编码

英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。

二. Unicode

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准 包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

Unicode 当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U 0639表示阿拉伯字母Ain,U 0041表示英语的大写字母A,U 4E25表示汉字严。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。

Unicode的问题:

Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

1)出现了Unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示Unicode。

2)Unicode在很长一段时间内无法推广,直到互联网的出现。

三、UTF-8

UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对它毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,它们被称为通用转换格式,即UTF。

UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16(字符用两个字节或四个字节表示)和UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

六、decode和encode的区别

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

获取更多Python 学习视频可加QQ:2876284369

猜您喜欢: