PythonのデフォルトエンコーディングをUTF-8に変更する。
Pythonでfoutするプログラムを作成していたら、
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position xx: ordinal not in range(128)
というエラーが発生しました。
調べてみると、エンコード関連のエラーのようなので設定を変更。
0. 必要な作業
・site-packagesディレクトリ配下に設定を記述したsitecustomize.pyファイルを作成する
1. site-packagesディレクトリの場所を探す
% sudo find / -name site-packages /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
複数のディレクトリがヒットしましたが、MacPortsでpython26をインストールした場合はここでした。
2. sitecustomize.pyを作成
% cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages % vi sitecustomize.py # 以下を記述する import sys sys.setdefaultencoding("utf-8")
3. ターミナル再起動後、確認
% python >>> import sys >>> sys.getdefaultencoding() 'utf-8'
となっていればO.K.
無事エラーが解消しました。
[参考]