火曜日, 7月 20, 2010

Python の unicode

Pythonで文字列を扱ってて、'ascii'でエンコードできない文字列です、とかエラーが出たら、unicodeを疑え!
→ http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

Python の unicode型は UTF-8等の文字列ではなく特殊な内部形式。
表示や処理(加算やスライス等)には文字列にエンコードが必要で、
何にエンコードされるかは、ロケールの決まった表示先(端末等)以外は
デフォルトのエンコード('ascii')になる。これが曲者。
なので、必要な時に明示的に hoge.encode('utf_8') などとして
文字列に変換すること。