当我使用不同的管道运行相同的代码时,为什么输出不同?
% python2.7 -c 'import sys; print sys.stdout.encoding'
UTF-8
% python2.7 -c 'import sys; print sys.stdout.encoding' | cat
None
答案 0 :(得分:7)
因为当您使用cat
(或任何管道)时,您将从终端取消绑定该进程。 Python从终端设置中获取有关编码的信息。
您可以使用enironment变量强制编码:
export PYTHONIOENCODING=utf-8