1

私は Unicode と Python 2.7 のさまざまなエンコーディング/デコーディングについて多くのことを読みましたが、IDLE が正しい文字列を出力できないように見える理由を理解するのにまだ苦労しています。

私はユニコード文字列を持っています:

>>> 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と関係があるかどうかわかりませんか?

4

1 に答える 1

1

これは、IDLE の出力ウィンドウが UTF-8 をサポートしていないためですが、Unicode 文字列を出力すると、標準出力エンコーディングで文字列を自動的にエンコードしようとします。以下は、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
于 2013-03-02T06:00:39.860 に答える