我已经阅读了很多关于Unicode和Python 2.7中的各种编码/解码的内容,但我仍然无法理解为什么IDLE似乎无法打印正确的字符串。
我有一个unicode字符串:
>>> s = u"Hey I\u2019m Bob"
>>> print s
Hey I'm Bob
然而,在我编码为UTF-8后,我得到:
>>> s.encode('utf-8')
'Hey I\xe2\x80\x99m Bob'
>>> print s.encode('utf-8')
Hey I’m Bob
我无法弄清楚为什么我无法正确打印,但我可以将s.encode('utf-8')写入文本文件并正确显示。不确定这是否与IDLE有关?
答案 0 :(得分:1)
这是因为IDLE的输出窗口不支持UTF-8,但是打印Unicode字符串会自动尝试在stdout编码中对字符串进行编码。以下是来自IDLE控制台:
>>> s = u"Hey I\u2019m Bob"
>>> print s
Hey I’m Bob
>>> print s.encode('utf8')
Hey I’m Bob
>>> import sys
>>> sys.stdout.encoding
'cp1252'
>>> print s.encode('cp1252')
Hey I’m Bob