这个问题曾在我初学Python的时候令我头疼不已,尤为是目前咱们由于各类包的缘由还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。html
Python 默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。java
没兴趣的同窗能够绕过这段…函数
有人可能要问了,我擦,为神马之前说一个汉字的精度越高字节越多么?为神马是两枚字节?字体
这是两个不一样的概念。存储里讲的是一个汉字占两个字节。 而你说的点阵那个是打印码。编码
平时说1个汉字占2个字节,是指汉字编码,就象每一个字符都有一个ASCII码同样。1个ASCII码占1个字节,而1个汉字编码占2个字节。spa
简单地解释下,咱们屏幕上看到的汉字实际上是一个16*16的矩阵,它所须要的位数共是16*16=256个位,每一个字节为8位,所以,每一个汉字都须要用256/8=32个字节来表示。命令行
即每两个字节表明一行的16个点,共须要16行,显示汉字时,只需一次性读取32个字节,并将每两个字节为一行打印出来,便可造成一个汉字。code
这也就是传说中的点阵字体。htm
---我是正文的分割线---blog
So当中文编码和ASCII混用的话,就会出现错误咯。
目前中文编码有GB2312,BIG5,GBK。
建议使用统一字符集Unicode,能够处理全部的语言文字。
若是在.py文件中使用中文,请使用:
#-*- coding:utf-8 –*-
请注意在使用IDE的时候,project的编码格式必定要设置为utf-8,不然输出的还是乱码,由于你写的脚本没用UTF-8保存。
先别急着去练习,我们来看看下面这个脚本:
#-*- coding:utf-8 –*-
# chinese.py
chinese='''
在Python中使用中文,必定要
注意字符编码问题
'''
print chinese
在命令行运行的结果:
这是咋回事呢?不是写了编码了么?还乱码啊,有木有?有木有?有木有?
这是由于win的,命令行用的是cp936编码,而上面脚本用的是utf-8编码,所以致使乱码。
解决方法是,使用decode和encode函数对字符从新解码和编码。
print chinese.decode('utf-8').encode('cp936')
OK,熟悉的文字出来了。
2011/8/8更新,如下内容转载自:
http://ppjava.iteye.com/blog/210143
常见的编码转换分为如下几种状况:
另一篇有价值的文章可查看这一篇:传送门