2017-02-28 21 views
3

如何从像Gnome-Terminal这样的终端程序运行时设置Python使用的默认编码sys.stdout如何在终端中修复Python编码

如果我执行Gnome终端内的Python脚本,我得到了臭名昭著的“UnicodeEncodeError:‘ASCII’编解码器不能编码字符”如果脚本尝试打印Unicode字符错误。但是,即使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。

+2

什么'echo $ LANG'和'echo $ LC_ALL' print? – hurturk

+2

在脚本文件的顶部尝试了'# - * - coding:utf-8 - * - '? – Szabolcs

+0

@Szabolcs根据我的理解,没有脚本 - 只有一个命令。 – avysk

回答