Python で “UnicodeDecodeError” というエラー

MeCab のユーザー辞書を作成するため、macOS (OS X) にデフォルトでインストールされている Python 2.7 のスクリプトを実行すると、次のエラーが表示されてしまいました。

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


このエラーは、Python のデフォルトの文字エンコーディングが ASCII なのに、スクリプト内で使用している正規表現の文字エンコーディングが UTF-8 になっているためでした。

そこで、Python デフォルトの文字エンコーディングを UTF-8 になるように設定します。

sitecustomize.py

Python の設定を変更するには、site-packages ディレクトリーにある sitecustomize.py に次の行を追加します。sitecustomize.py がないときはファイルを作成します。

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

site-packages ディレクトリーは、/Library/Python/2.7 にあります。MAMP の Python を利用しているときは、/Applications/MAMP/Library/lib/Python2.7 にあります。

文字エンコーディングの確認

Python で次のスクリプトを実行して、デフォルトのエンコーディングが UTF-8 になっていることを確認します。

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

作成者: コネタねこ

上から読んでも『コネタねこ』、下から読んでも『コネタねこ』。贈り物に悩んだら、コネタねこの小ネタ帳。欲しくなっちゃうプレゼント、そんなアイデアのぞきにきてね♪

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です