Python 2.7 Unicode / IDLE混淆

时间:2013-03-02 05:56:17

标签: python unicode encoding python-idle

我已经阅读了很多关于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有关?

1 个答案:

答案 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