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エンコードバージョンを取得するにはどうすればよいですか?誰かがéを変換する方法の例を挙げてもらえますか?
ラテン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'
>>> 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')
é
エンコードとデコードは、効果的にキャンセルされる反対の操作であることに注意してください。 Pythonは、同等のu"é"
として出力しますが、最終的には元のu'\xe9'
文字列に戻ります。
>>> u"é" == u'\xe9'
True
コンセプト= concept.encode( 'ascii'、 'ignore')コンセプト= MySQLdb.escape_string(concept.decode( 'latin1')。encode( 'utf8')。rstrip())
私はこれを行います、それが良いアプローチであるかどうかはわかりませんが、それは毎回機能します!!