我正在调用某种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中不再可用
请指教。
答案 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