关于Windows下python编码问题

来源:互联网 发布:什么行业需要网络推广 编辑:程序博客网 时间:2024/05/17 06:21

一、编码简介
我们知道,在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。很显然这种单字节的编码能表示的字符有限,对于英语还能勉强够用,但是对于汉语和其他一些语种就不够了,所以不同的国家就各自建立自己语言的编码标准。
中国的编码标准是GBK,这是两个字节的编码方式,它可以编码65536个字符。GB是国标的意思,中国所以标准都以GB开头。第一个版本的GBK是GB2312,它只包含了6000个常用字。所以才有了后来的GB18030,它不仅包含了GB2312的6000个常用字,还扩展了2万多个汉子。
因为很多国家的建立了自己的编码标准,这些标准之间是相互不识别的,这导致了计算机语言的沟通交流很困难。后来ISO(国际标准化组织)建立了一个统一的编码标准叫Unicode,它是两个字节的编码方式,这个标准解决上述问题。
UTF-8是Unicode的实现方式之一,UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

二、解决python编码问题
python3已经把默认编码改成“utf-8”了,所以使用python3的朋友很少遇到编码的问题。由于python2比python3的库丰富的原因,所以还有很大一部分人在使用Python2,python的默认编码是ASCII。
在windows下打开Python shell,import sys,sys.按tab键自动补全会看到getdefaultencoding()函数,回车就看到了输出结果为’ascii’,这是默认的编码。但是在windows下sys.自动补全中却没有setdefaultencoding()函数,这时你需要reload(sys)一下后就会有setdefaultencoding()函数了,这是Windows的一个小bug。然后setdefaultencoding(‘utf-8’)显示地设置为‘utf-8’就好了,这是一种方式。
另外,可以在打印字符串时使用格式如:print “%s”%string。第三种方式是,直接转换如:print unicode(要打印的string)。

0 0
原创粉丝点击