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.

無事エラーが解消しました。



[参考]

Pythonのデフォルトエンコーディングをutf-8にする