13

Python 2.7 では、latin1 文字列を UTF-8 に変換する方法を教えてください。

たとえば、é を utf-8 に変換しようとしています。

>>> "é"
'\xe9'
>>> u"é"
u'\xe9'
>>> u"é".encode('utf-8')
'\xc3\xa9'
>>> print u"é".encode('utf-8')
é

文字は é で、ラテン語小文字 E 鋭角 (U+00E9) です。 の UTF-8 バイト エンコーディングは次のとおりです: c3a9
ラテン語バイト エンコーディングは次のとおりです: e9

ラテン文字列の UTF-8 エンコード バージョンを取得するにはどうすればよいですか? 誰かがéを変換する方法の例を挙げてもらえますか?

4

3 に答える 3

10

latin 1 から Unicode にバイト シーケンスをデコードするには、次の.decode()メソッドを使用します。

>>> '\xe9'.decode('latin1')
u'\xe9'

Python は\xab、以下の Unicode コードポイントにエスケープを使用します\u00ff

>>> '\xe9'.decode('latin1') == u'\u00e9'
True

上記の Latin-1 文字は、次のように UTF-8 にエンコードできます。

>>> '\xe9'.decode('latin1').encode('utf8')
'\xc3\xa9'
于 2013-01-21T17:13:41.660 に答える
3
>>> u"é".encode('utf-8')
'\xc3\xa9'

UTF-8でエンコードされたバイトシーケンスがあります。エンコードされたバイトを直接印刷しようとしないでください。それらを印刷するには、エンコードされたバイトをデコードしてUnicode文字列に戻す必要があります。

>>> u"é".encode('utf-8').decode('utf-8')
u'\xe9'
>>> print u"é".encode('utf-8').decode('utf-8')
é

エンコードとデコードは、効果的にキャンセルされる反対の操作であることに注意してください。u"é"Pythonはそれを同等のものとして出力しますが、最終的には元の文字列に戻りu'\xe9'ます。

>>> u"é" == u'\xe9'
True
于 2013-01-21T17:16:20.327 に答える