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

Ale*_*nko 4 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
Run Code Online (Sandbox Code Playgroud)

Igo*_*bin 7

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

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

export PYTHONIOENCODING=utf-8
Run Code Online (Sandbox Code Playgroud)