方法
今回はPython2.5での話をしています。encode()、decode()メソッドを使えばOK。
そもそもPythonの文字列型ってなによって話なんですが、str型とunicode型の二種類があります。基本マルチバイトを扱ってるときはunicode中心に考えれば上記使い方に納得です。
まずそもそもunicode型扱ってて最初に意味不明になったのは、「結局unicode型って文字コードはなんなの?」ってことなんですが、結論から言うと「どの文字コードでもない」、つまりPython独自のもの。というわけで外部とのやりとりが発生するときは必ず変換が必要。
unicodeから各種文字コードに変換する
ustr = u'こんにちは' print type(ustr) # <type 'unicode'> ustr.encode('utf-8')
例だとunicode型をUTF-8に変換してます。ここもはまりポイントで、UTF-8はあくまでUnicodeの実装であって、unicode型とは違いますよということ。これで15分くらい悩んだ。
各種文字コードからunicodeに変換する
# strにUTF-8の文字列が入っているとします print type(str) # <type 'str'> str.decode('utf-8') unicode(str, 'utf-8') # unicode関数を使ってもOK
メモ
マルチバイト文字列を扱う関数を実装するときはどんな文字列を扱ってるか気をつけないといけないですね。