在 'reload(sys)' 之后无法在 Python IDLE 中输出
Cannot output in Python IDLE after 'reload(sys)'
我一直在处理 python 中的汉字时遇到困难,但显然添加
import sys
reload(sys)
sys.setdefaultencoding('utf8')
解决了我的问题。好吧,至少其中一些。
现在,我发现我无法在 Python IDLE 上使用 print
或 pprint
发送输出。
我检查了我的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 解释器甚至更好;两者都没有这个错误。
我一直在处理 python 中的汉字时遇到困难,但显然添加
import sys
reload(sys)
sys.setdefaultencoding('utf8')
解决了我的问题。好吧,至少其中一些。
现在,我发现我无法在 Python IDLE 上使用 print
或 pprint
发送输出。
我检查了我的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 解释器甚至更好;两者都没有这个错误。