4
當我用不同的管道運行相同的代碼時,爲什麼輸出不同?爲什麼輸出管道時,sys.stdout.encoding有所不同(在Python2.x中)?
% python2.7 -c 'import sys; print sys.stdout.encoding'
UTF-8
% python2.7 -c 'import sys; print sys.stdout.encoding' | cat
None
當我用不同的管道運行相同的代碼時,爲什麼輸出不同?爲什麼輸出管道時,sys.stdout.encoding有所不同(在Python2.x中)?
% python2.7 -c 'import sys; print sys.stdout.encoding'
UTF-8
% python2.7 -c 'import sys; print sys.stdout.encoding' | cat
None
因爲當你使用cat
(或任何管),則取消綁定從終端的過程。 Python從終端設置獲取有關編碼的信息。
可以使用enironment變量強制編碼:
export PYTHONIOENCODING=utf-8