当从终端程序(如Gnome-Terminal)运行时,如何设置Python与 sys.stdout
一起使用的默认编码?
如果我在Gnome-Terminal中执行Python脚本,如果脚本尝试打印unicode字符,我会收到臭名昭着的"UnicodeEncodeError: 'ascii' codec can't encode character"错误 . 但是,即使Gnome-Terminal的编码设置为"UTF-8",如果我打印 sys.stdout.encoding
它显示"ANSI_X3.4-1968" .
重现错误的最小代码是:
python -c 'import sys; print sys.stdout.encoding; print u"\u0411\n"'
为什么Python不使用终端的utf-8编码?
注意,我不是问如何将我的字符串转换为ASCII .
1 回答
尝试设置PYTHONIOENCODING变量,或使用this question中的解决方案 .