在 'reload(sys)' 之后无法在 Python IDLE 中输出

Cannot output in Python IDLE after 'reload(sys)'

我一直在处理 python 中的汉字时遇到困难,但显然添加

import sys
reload(sys)
sys.setdefaultencoding('utf8')

解决了我的问题。好吧,至少其中一些。 现在,我发现我无法在 Python IDLE 上使用 printpprint 发送输出。

我检查了我的IDLE设置,结果没问题。

但是,我仍然可以从 PyCharm 控制台获得输出。

谁能告诉我这里出了什么问题?

我想 IDLE 会更改 sys.stdout 的值以将输出重定向到它的 window。如果你reload(sys),你打破了这个,并且在IDLE中看不到输出。

Python 2.7 IDLE 在解释 输入 时似乎有一个错误,如下所示:

>>> u'不'
u'\xe4\xb8\x8d'
>>> print u'不'
ä¸
>>> print u'\u4e0d'
不
>>> _

如您所见,文字 u'不' 并没有被当作 Unicode 字符,而是先被翻译成 UTF-8,然后这些字节被标记为 Unicode 字符串。难怪不能正确打印。如果您提供真实的 Unicode 代码点,结果将按预期打印。

我在这里不知道如何处理 IDLE。我发现 Python 在终端中的 REPL 已经足够好了,而且 运行 IPython 或 emacs 中的 Python 解释器甚至更好;两者都没有这个错误。