PythonでUnicodeEncodeError: 'ascii' codecがでた場合の対処方法
Pythonはデフォルトのエンコーディングを指定しないと、UnicodeEncodeErrorが発生する場合があります。
今回はその解決方法について記載します。4つ環境を用意してみました。
エラー例
# python Python 2.6.6 (r266:84292, Jan 3 2011, 14:20:44) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> s = u'てすと' >>> str(s) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
環境
次の環境で実施しました。4つの環境で試しています。
1.Python2.4
CentOS5.5
Python2.4(標準インストール)
2.Python2.6
CentOS5.5
Python2.6
3.Python2.7
CentOS5.5
Python2.7
4.Pinax0.7.1バンドル版
CentOS5.5
Pinax0.7.1/Python2.6
設定方法
以下のディレクトリに「sitecustomize.py」を作成してください。
1.Python2.4(標準インストール)
/usr/lib/python2.4/site-packages/
2.Python2.6
/usr/local/lib/python2.6/site-packages/
3.Python2.7
/usr/local/lib/python2.7/site-packages/
詳細内容
sitecustomize.pyに
import sys sys.setdefaultencoding('utf-8')
を記載してください。
結果
このようになれば成功です。
# python Python 2.6.6 (r266:84292, Jan 3 2011, 14:20:44) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> s = u'てすと' >>> str(s) '\xc3\xa3\xc2\x81\xc2\xa6\xc3\xa3\xc2\x81\xc2\x99\xc3\xa3\xc2\x81\xc2\xa8'