您的位置:首页 > 编程语言 > Python开发

Python当前的默认编码设置setdefaultencoding

2010-06-23 11:23 423 查看
更多请去 http://www.jucoder.com
在Python开发过程中,常常会遇到这样的问题,很让人头疼:

......

print s

......

Traceback (most recent call last):

File "<stdin>", line 1, in ?

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

究其原因,是想要在屏幕上输出的字符,不符合当前设定终端编码。在上面这个例子中,当前终端的编码设置为ascii,而欲输出的字符为utf-8编码,ascii的每个字符的十进制编码都在0-128以内,当然无法识别utf-8的编码。

要解决这个问题,首先修改终端的字符编码设置:

>>> import sys

>>> sys.getdefaultencoding()

'ascii'

可以看到,当前的默认编码是ascii,要修改这个设置,可以在Python安装目录下的Lib/site-packages目录中,新建一个sitecustomize.py文件(也可以建在其它地方,然后手工导入,建在这里,每次启动Python的时候设置将自动生效),内容如下:

import sys

sys.setdefaultencoding('utf-8') #set default encoding to utf-8

然后可以查看到改变已经生效

>>> import sys

>>> sys.getdefaultencoding()

'utf-8'

此时运行程序,如果仍然报告之前的错误,只需要显示地设定输出的编码

print s.encode('utf-8')

就可以看到正确显示。

出自 聚程网 http://www.jucoder.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: