设置Python文件的默认编码

0 投票
1 回答
4109 浏览
提问于 2025-04-17 16:22

我在调用一个API,这个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 个回答

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

撰写回答