为什么输出传送时sys.stdout.encoding不同(在Python2.x中)?

时间:2012-07-26 09:25:28

标签: python python-2.x

当我使用不同的管道运行相同的代码时,为什么输出不同?

% python2.7  -c 'import sys; print sys.stdout.encoding'
UTF-8
% python2.7  -c 'import sys; print sys.stdout.encoding' | cat
None

1 个答案:

答案 0 :(得分:7)

因为当您使用cat(或任何管道)时,您将从终端取消绑定该进程。 Python从终端设置中获取有关编码的信息。

您可以使用enironment变量强制编码:

export PYTHONIOENCODING=utf-8