Python2.x的中文显示方法

Python的默认编码

Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,Python的处理常常会报这样的错:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),

Python没办法处理费ascii编码的,此时需要自己设置将Python的默认编码,一般设置为utf-8的编码格式。
查询系统默认编码可以在解释器中输入以下命令:

>>> import sys
>>> sys.getdefaultencoding() 
'ascii'

临时更改编码

设置默认编码时使用:

>>> sys.setdefaultencoding('utf8')
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'module' object has no attribute 'setdefaultencoding'

发现报错。
需要先执行reload(sys),再执行以上命令就可以顺利通过了:

>>> reload(sys)

>>> sys.setdefaultencoding('utf8')
>>> sys.getdefaultencoding()
'utf8'

此时在执行sys.getdefaultencoding()就会发现编码已经被设置为utf8的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了,那么有没有办法一次性修改程序或系统的默认编码呢?

两种方法设置Python的默认编码

1、在程序中加入以下代码:

import sys 
reload(sys) 
sys.setdefaultencoding('utf8')  

2、在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8 

import sys   
reload(sys) 
sys.setdefaultencoding('utf8')  

重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

还有一种解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告.

ps:方法2中,如何找到python的Lib\site-packages文件夹?方法如下:

>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
 '/Library/Python/2.7/site-packages']

可以看到,最后一个即为我们要寻找的文件夹路径。

你可能感兴趣的:(Python2.x的中文显示方法)