【Python】UnicodeDecodeError が出た場合の対処方法

DEVELOP, Python

古い環境のために、Python 2.7 で スクリプト実行した際に UnicodeDecodeError エラーが出てしまいました。

 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128) 

pythonスクリプトがデフォルドのファイルエンコーディングと一致しないためランタイムエラーが出ている様です。

目次

現在のデフォルトエンコーディングを確認する

まずは sys.getdefaultencoding で現在のエンコーディングがどれになっているのか確認します。

$ python
>>> import sys
>>> sys.getdefaultencoding()
'ascii'

デフォルトのエンコーディングが 'ascii’ になっていました。これを’utf-8′ に変更します。

対処方法

site-packages のあるフォルダを開きます。python2.7 をデフォルトインストールした際には[C:\Python27\Lib\site-packages] になっていると思います。この site-packages フォルダに sitecustomize.py というpython 起動時に実行される環境設定用のスクリプトファイルを作成します。

import sys
sys.setdefaultencoding('utf-8')

作成できたら、sys.getdefaultencoding 設定が変更されたか確認します。

$ python
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

無事に 'utf-8’ へ変更されればエラーが解消されます。

Posted by kazupon