PythonにおけるUnicodeとUTF-8の相互変換

プログラミングで文字列を扱う際には、文字コードに注意することが大切です。
特に、Web上のデータをかき集めようと思ったら、様々な文字コードに出会うことになるので、文字コードの判定方法と変換方法は覚えておかねばならない、重要な項目の一つです。

と言いつつも、Python文字コードに関する作法が、個人的によく忘れがちで、「あれ?!エラーが出たぞ!!」なんてことがしばしば。
しかし、これからはそんなことが起きないように、文字コードの変換方法をここに備忘録として記述しておこうと思います。

まず、UTF-8からUnicodeへの変換方法。

uni_text = unicode(utf_text,'utf-8')

そして、UnicodeからUTF-8への変換方法。

utf_text = uni_text.encode('utf-8')

おそらくこの基本形を覚えていたら、他の文字コードとの相互変換もある程度許容できるでしょう。

ちなみに、文字コードの判定方法は、Universal Encoding Detectorを利用すると大変便利です。
あらゆる国の文字コードを判定してくれるのみならず、その判定結果の信頼度まで提供してくれる優れものです。

import urllib
urlread = lambda url: urllib.urlopen(url).read()
import chardet
chardet.detect(urlread("http://google.cn/"))

{'encoding': 'GB2312', 'confidence': 0.99}

これらのソースコードを使って、文字コードを手軽に処理し、もっと大切な他の部分に注力できるよう、がんばりましょうね。