当我使用不同的管道运行相同的代码时,为什么输出不同?
% 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)
因为当您使用cat(或任何管道)时,您从终端解除绑定进程.Python从终端设置中获取有关编码的信息.
您可以使用enironment变量强制编码:
export PYTHONIOENCODING=utf-8
Run Code Online (Sandbox Code Playgroud)