UnicodeEncodeErrorの解決方法
エラー文
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
結論を先に書きますと、下記のページのやり方で解決できました。
[Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。 - SumiTomohikoの日記
上記の記事の環境は、Ubuntu 6.10, Python 2.4ですが、私の環境 Ubuntu 7.04, Python 2.5でも全く同じでした。
以下引用
解決方法
以下の/usr/lib/python2.4/site-package/sitecustomize.pyを作成してください。
import sys sys.setdefaultencoding('utf-8')
詳細デフォルトのエンコーディングは、以下のようにして確認できます。
$ python Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02) [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() 'ascii'
sitecustomize.pyは、pythonが起動したときに読み込まれるモジュールです。この中で、python全体の設定を行うことができます。デフォルトのエンコーディングを正しく設定した場合、問題の現象は以下のようになります。$ python Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02) [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() 'utf-8' <<