在python.py中设置默认编码

时间:2013-02-19 14:13:52

标签: python encoding python-2.7

我正在调用某种API,它返回一个具有三个属性的对象:

obj.name
obj.id
obj.text

所有这些都可以采用不同的编码方式。

为了正确输出到我的终端,我现在正在做

print obj.name.encode('UTF-8')
print obj.id.encode('UTF-8')
print obj.text.encode('UTF-8')

有没有办法我只需要一次将我的默认编码设置为UTF-8?

我读了一些其他帖子建议调用sys.setdefaultencoding('UTF-8'),这在python 2.7.x中不再可用

请指教。

1 个答案:

答案 0 :(得分:3)

通常 Python从终端设置中检测输出编码;您可以通过运行来查看Python检测到的内容:

import sys
sys.stdout.encoding

如果这对您不起作用,您确实希望将终端配置为指定正确的编码;例如,在POSIX系统上设置LC_CTYPE环境变量。

您还可以通过设置PYTHONIOENCODING环境变量强制Python使用编码:

$ PYTHONIOENCODING=latin-1 python -c 'import sys; print sys.stdout.encoding'
latin-1
$  PYTHONIOENCODING=utf8 python -c 'import sys; print sys.stdout.encoding'
utf8