如何在终端中修复Python编码问题

4
如何设置Python在象Gnome-Terminal这样的终端程序中使用sys.stdout默认编码?
如果我在Gnome-Terminal中执行Python脚本,如果脚本尝试打印Unicode字符,则会收到臭名昭著的“UnicodeEncodeError:'ascii' codec不能编码字符”错误。然而,即使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 $LANGecho $LC_ALL 分别打印什么? - hurturk
2
尝试在你的脚本文件顶部加入 # -*- coding: utf-8 -*- 了吗? - Szabolcs
请问您能否在终端中展示locale命令的输出结果? - avysk
这并不完全是你问题的答案,但这里的信息可能会帮助你解决问题:https://dev59.com/UnE85IYBdhLWcg3w03Dz - Richard Dunn
1
@Szabolcs 和点赞者们。# coding: utf8 声明了源文件的编码,仅此而已。 - Mark Tolonen
显示剩余2条评论
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接