エンコーディングについてのメモ
お世話になっております。
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()を使用します。
以上