关于unicode:如何在终端中修复Python编码

How to fix Python encoding in terminal

当从像gnome终端这样的终端程序运行时,如何设置python与sys.stdout一起使用的默认编码?

如果我在gnome终端内执行一个python脚本,如果脚本试图打印unicode字符,我会得到臭名昭著的"unicode encode error:'ascii'codec can't encode character"错误。然而,即使gnome终端的编码设置为"utf-8",如果我打印sys.stdout.encoding,它显示"ansi x3.4-1968"。

重现错误的最小代码是:

1
2
python -c 'import sys; print sys.stdout.encoding; print u"\u0411
"'

为什么python不使用终端的utf-8编码?

注意,我不是在问如何将字符串转换为ASCII。


尝试设置PYTHONIOENCODING变量,或使用此问题中的解决方案。