エンコーディングについてのメモ

 お世話になっております。
 Twitter APIにアクセスした際に、文字コード関係でわかったことがあるのでメモしておきます。開発環境は、Cygwin+Python 2.5.2です。XMLで取得し、コンソール(shift_jis)へ表示します。
 まず、コード変換にはencode()とdecode()を使用しますが、unicodeへ変換するのがdecode()で、unicodeから変換するのがencode()です。例えば、UTF-8からshift_jisへ変換するには以下のとおり。

'あいうえお'.decode('utf-8').encode('shift_jis')

 どちらのメソッドも、第2引数として変換に失敗した時の振る舞いを指定することができ、何も指定しないとUnicodeErrorが発生しますが、'replace'を指定すれば、「文字化け」状態にして処理を継続できます。ドキュメントはこちら
 次に、標準の文字コードの設定と参照の仕方です。設定は、/usr/lib/python2.5/site-packagesへ、以下のようなsitecustomize.pyファイルをおきます。

import sys
sys.setdefaultencoding('shift_jis')

 参照するには、sys.getdefaultencoding()を使用します。

以上