4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(MAC) Python 2.7.10でのUnicodeDecodeError対処法

Posted at

はじめに

Pythonでファイルを読み込むと、「UnicodeDecodeError」がよく発生します。
その対処法をメモします。

基本は、「読込ファイルの文字コード」と「Pythonデフォルトの文字コード」に注意して実装すれば対処できます。

UnicodeDecodeError: 'XXXXXXXXXX(ex.ascii)' codec can't decode bytes in position 56-57: illegal multibyte sequence

ファイルが'XXXXXXXXXX'コードではない場合、このようなエラーが出ます。

1. asciiのエラー場合

以下のようなasciiのエラーの場合は、 デフォルトの文字コードをutf-8にすることで解消することができます。

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

以下のサイトの方法でデフォルトを変更できます。
Python スクリプト実行時に UnicodeDecodeError が出る場合の対処方法

できない場合は、こちらをソースコードに書いてみてください。

set-defaultencoding.py
import sys
# sysモジュールをリロード
reload(sys)
# デフォルトの文字コードを変更
sys.setdefaultencoding('utf-8')
# 確認
print 'defaultencoding:', sys.getdefaultencoding()

2. shift-jisのエラー場合

shift-jisのエラーメッセージの場合は、読み込みファイルがshift-jisではなく、
utf-8とかの可能性があります。

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 56-57: illegal multibyte sequence

従って、ファイルのオープンのコードを変更してください。

file-open-utf8.py
fin  = codecs.open(filename, 'r', 'utf-8')

3. utf-8のエラー場合

utf-8のエラーメッセージの場合は、読み込みファイルがutf-8ではなく、
shift-jisとかの可能性があります。

UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 56-57: illegal multibyte sequence

従って、ファイルのオープンのコードを変更してください。

file-open-shiftjis.py
fin  = codecs.open(filename, 'r', 'shift-jis')

さいごに

「読込ファイルの文字コード」と「Pythonデフォルトの文字コード」に注意して実装すれば対処できます。
たまにpythonをやるとハマりますので、個人的なメモとして書きました。。。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?