2013-01-21 40 views
7

Python 2.7では、どのようにしてlatin1文字列をUTF-8に変換しますか?latin1をUTF8に変換するPython

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

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

手紙は、急性(U + 00E9)WITH LATIN SMALL LETTER Eの UTF-8バイトのエンコーディングがされてあるéです:c3a9
ラテンバイトエンコーディングは以下のとおりです。E9

行う方法私はラテン文字列のUTF-8エンコードバージョンを取得しますか?誰かがéを変換する方法の例を挙げることができますか?

+0

[Python Unicode HOWTO](http://docs.python.org/2/howto/unicode.html)はまだ読んでいますか?そうでなければ、あなたはすべきです! –

+0

@MartijnPieters私は持っているが、エンコーディングは常にちょっと混乱している。 – Eugene

答えて

6

.decode() methodを使用し、ラテン1からUnicodeにバイトシーケンスをデコードするために:

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

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

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

としてLatin-1文字はUTF-8にエンコードすることができ、上記ザ・:あなたはUTF-8でエンコードされたバイトシーケンスを持っている

>>> '\xe9'.decode('latin1').encode('utf8') 
'\xc3\xa9' 
2
>>> u"é".encode('utf-8') 
'\xc3\xa9' 

。エンコードされたバイトを直接印刷しないでください。それらを印刷するには、エンコードされたバイトを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 
0

概念= concept.encode( 'ASCII'、 '無視')の概念= MySQLdb.escape_string(concept.decode( 'LATIN1')。)( 'UTF8' をコードする。rstrip())

私はこれをやっていますが、これは良いアプローチだとは分かりませんが、毎回動作します!

関連する問題