UnicodeDecodeError: 'utf-8' コーデックはバイトをデコードできません。

以下は私のコードです、

for line in open('u.item'):
#read each line

このコードを実行すると、必ず次のようなエラーが出ます:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

これを解決するために、open()に追加のパラメータを追加しようとしたところ、コードは次のようになりました;

for line in open('u.item', encoding='utf-8'):
#read each line

しかし、また同じエラーが出ます。 どうしたらいいのでしょうか!助けてください。

質問へのコメント (4)
ソリューション

Mark Ransomの提案により、その問題に適したエンコーディングを見つけました。そのエンコーディングは "ISO-8859-1" でしたので、open("u.item", encoding="utf-8")open('u.item', encoding = "ISO-8859-1") に置換すれば問題は解決します。

解説 (6)

ISO 8859-1は、主に音声認識APIを使用している場合、大幅に節約できます。

例:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
解説 (2)

あなたのファイルは実際にはutf-8でエンコードされたデータではなく、他のエンコーディングが含まれています。そのエンコーディングが何であるかを調べ、openコールでそれを使用します。

例えばWindows-1252のエンコーディングでは、0xe9éという文字になります。

解説 (2)

これを試して、パンダを使用して読んでください。

pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
解説 (1)

Python 2を使用している場合、次の解決策があります。

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # do something

encodingパラメータは open()では機能しないため、次のエラーが発生します。

。
TypeError: 'encoding'は、この関数の無効なキーワード引数です。
< / pre>。
解説 (4)

次の問題を解決できます。 。 open(your_file_path、 'rb')の行の場合: 。 'rb'はバイナリモードでファイルを読み取っています。 続きを読むここ。 これが役立つことを願っています。!

解説 (1)

もしこれらを探している人がいたら、これはPython 3でCSVファイルを変換するための例です:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
解説 (0)

時々「filepath」が実際にファイルではない「open(filepath)」の場合、同じエラーが発生するため、最初に開こうとしているファイルが存在することを確認します。

import os
assert os.path.isfile(filepath)

これが役立つことを願っています。

解説 (0)