我在python中处理中文字符时遇到了困难,但显然已添加
import sys
reload(sys)
sys.setdefaultencoding('utf8')
解决了我的问题。好吧,至少其中一些。
现在,我发现我无法在Python IDLE上发送带有print
或pprint
的输出。
我检查了IDLE的设置,结果没问题。
但是,我仍然可以从PyCharm控制台获得输出。
有谁能告诉我这里出了什么问题?
答案 0 :(得分:1)
我认为IDLE会更改sys.stdout
的值以将输出重定向到其窗口。如果你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已经足够好了,从emacs中运行IPython或Python解释器就更好了;两者都没有这个bug。