LinuxでPythonスクリプトで「UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc2 in position 0: ordinal not in range(128)」というエラーが出たときの暫定対応

Linuxでどこぞから持ってきたPython(2.x系)のスクリプトをキックした際、「UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc2 in position 0: ordinal not in range(128)」というエラーが出てしまうことがある。これは、現在スクリプトをキックしているPythonのデフォルトが’ascii’になっていることが原因のようなので、これを’utf-8’に変更してやることで暫定対応ができる(ほんとはソース直せって話なんだろうが)。

blacknon@BS-PUB-UBUNTU-01:~$ python -c 'import sys;print sys.getdefaultencoding()'
ascii
Sponsored Links

以下のコマンドで、PythonのデフォルトをUTF-8に変更できる。

sudo sh -c 'echo "import sys\nsys.setdefaultencoding('\''utf-8'\'')" >> /usr/lib/python2.7/sitecustomize.py'
blacknon@BS-PUB-UBUNTU-01:~$ python -c 'import sys;print sys.getdefaultencoding()'
ascii
blacknon@BS-PUB-UBUNTU-01:~$ sudo sh -c 'echo "import sys\nsys.setdefaultencoding('\''utf-8'\'')" >> /usr/lib/python2.7/sitecustomize.py'
blacknon@BS-PUB-UBUNTU-01:~$ python -c 'import sys;print sys.getdefaultencoding()'
utf-8

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*