PythonのUnicodeDecodeErrorとは?意味・原因・CSVの直し方を初心者向けに解説

ながみえ

PythonでCSVファイルやテキストファイルを読み込んだときに、次のようなエラーが表示されることがあります。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93
in position 12: invalid start byte

英語のエラーメッセージだけを見ると難しく感じますが、UnicodeDecodeErrorの多くは、ファイルの文字コードとPythonで指定した文字コードが合っていないことが原因です。

例えば、cp932で保存されたCSVファイルをUTF-8として読み込もうとすると、Pythonが一部の文字を正しく変換できず、UnicodeDecodeErrorが発生します。

この記事では、UnicodeDecodeErrorの意味や主な原因、CSVファイルを読み込むときの直し方を初心者向けに解説します。

ほかのPythonエラーについて調べたい場合は、Pythonエラー一覧も参考にしてください。

あわせて読みたい
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
あわせて読みたい
Python入門講座|初心者向け無料カリキュラム
Python入門講座|初心者向け無料カリキュラム

UnicodeDecodeErrorとは

UnicodeDecodeErrorとは、バイトデータを文字列へ変換するデコード処理に失敗したときに発生するエラーです。

CSVファイルやテキストファイルの中身は、コンピューター上ではバイトデータとして保存されています。Pythonでファイルを読み込むときは、そのバイトデータをUTF-8やcp932などの文字コードに従って、人が読める文字列へ変換します。

このとき、指定した文字コードのルールでは変換できないデータが見つかると、UnicodeDecodeErrorが発生します。

簡単に言うと、Pythonが「このファイルを指定された文字コードでは正しく読めません」と知らせているエラーです。

エンコードとデコードの違い

文字コードに関するエラーを理解するために、エンコードとデコードの違いを確認しておきましょう。

処理変換の方向使用される場面
エンコード文字列からバイトデータへ変換するファイルへの書き込みやデータの送信
デコードバイトデータから文字列へ変換するファイルの読み込みやデータの受信

例えば、「こんにちは」という文字列をファイルに保存するときは、文字列をバイトデータへエンコードします。反対に、そのファイルをPythonで読み込むときは、バイトデータを文字列へデコードします。

UnicodeDecodeErrorは、後者のデコード処理で発生するエラーです。ファイルを読み込む際に指定した文字コードと、実際にファイルで使われている文字コードが一致しているかを確認することが、解決の基本となります。

UnicodeDecodeErrorのエラーメッセージの意味

UnicodeDecodeErrorが発生すると、使用した文字コードや問題が見つかった位置などがエラーメッセージに表示されます。

次のメッセージを例に、表示内容を確認してみましょう。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93
in position 12: invalid start byte

各部分には、次のような意味があります。

表示意味
UnicodeDecodeErrorバイトデータから文字列への変換に失敗した
'utf-8' codecUTF-8としてデコードしようとした
can't decode byte 0x930x93というバイトを文字に変換できなかった
position 12ファイル内の位置12付近で問題が見つかった
invalid start byteUTF-8の文字として正しくない開始バイトだった

この例では、PythonがファイルをUTF-8として読み込もうとしましたが、UTF-8のルールでは解釈できないバイトが見つかっています。

ただし、このメッセージだけで正しい文字コードが確定するわけではありません。ファイルがcp932なのか、別の文字コードなのか、あるいはテキスト以外のデータが含まれているのかを確認する必要があります。

エラーに表示された文字コードを適当に変更するのではなく、ファイルが実際にどの文字コードで保存されているかを確認し、その文字コードをPython側でも指定することが大切です。

UnicodeDecodeErrorが起きる主な原因

UnicodeDecodeErrorが発生する代表的な原因は、ファイルで使われている文字コードと、Python側で指定した文字コードが一致していないことです。

ただし、文字コードの指定ミス以外にも、ファイル形式やデータの状態が原因になる場合があります。まずは、主な原因と確認するポイントを整理しておきましょう。

原因具体的な状況確認するポイント
文字コードの指定が間違っているcp932のファイルをUTF-8として読み込んでいるファイルが実際にどの文字コードで保存されているか
encodingを指定していない実行環境の標準文字コードで読み込まれているopen()read_csv()の指定内容
CSVファイルの作成元が異なるExcelや外部システムから出力されたCSVを読み込んでいるCSVの保存形式や出力設定
テキストではないファイルを開いている画像やExcelファイルをテキストとして読み込んでいるファイルの種類や拡張子
データの一部が壊れている一部に不正なバイトや異なる文字コードが含まれているエラーが発生した位置付近のデータ
UTF-8とcp932を反対に指定しているUTF-8のファイルをcp932として読み込んでいるPython側の指定とファイルの文字コードが一致しているか

ファイルとPythonで文字コードが一致していない

最も多い原因は、ファイルの文字コードとPythonで指定した文字コードが一致していないことです。

例えば、cp932で保存されたCSVファイルを、次のようにUTF-8として読み込むと、UnicodeDecodeErrorが発生する可能性があります。

with open("sales.csv", "r", encoding="utf-8") as file:
    text = file.read()

このコードでは、Pythonがsales.csvをUTF-8のルールで文字列に変換しようとします。

しかし、実際のファイルがcp932で保存されている場合、UTF-8では解釈できないバイトが含まれているため、デコード処理に失敗します。

反対に、UTF-8で保存されたファイルをcp932として読み込んだ場合にも、同じようなエラーが発生することがあります。

そのため、「UnicodeDecodeErrorが出たらcp932を指定する」と覚えるのではなく、ファイルで使われている文字コードを確認し、同じ文字コードをPython側に指定することが重要です。

encodingを指定していない

open()でファイルを開くときにencodingを省略すると、実行環境で設定されている標準の文字コードが使用されます。

with open("data.csv", "r") as file:
    text = file.read()

この書き方では、同じプログラムでも、使用しているOSやPythonの実行環境によって読み込み結果が変わる可能性があります。

あるパソコンでは正常に動いていても、別のパソコンではUnicodeDecodeErrorが発生することもあります。

文字コードが分かっている場合は、次のようにencodingを明示しておくと安全です。

with open("data.csv", "r", encoding="utf-8") as file:
    text = file.read()

ファイルがcp932で保存されている場合は、encoding="cp932"を指定します。

with open("data.csv", "r", encoding="cp932") as file:
    text = file.read()

環境に依存しないプログラムにするためにも、テキストファイルを読み込むときはencodingを明示する習慣をつけておきましょう。

CSVファイルの作成元によって文字コードが異なる

CSVファイルは、作成したソフトや出力元のシステムによって文字コードが異なることがあります。

例えば、自分でUTF-8として保存したCSVと、Excelや業務システムから出力したCSVでは、同じ.csvという拡張子でも文字コードが異なる場合があります。

CSVの作成例使用される可能性がある文字コード
プログラムから出力したCSVUTF-8
Excelから保存したCSVcp932やUTF-8
業務システムから出力したCSVcp932や独自の設定
Webサービスから取得したCSVUTF-8など

ただし、作成元だけで文字コードを断定することはできません。保存時の設定やシステムの仕様によって異なるため、実際のファイルを確認する必要があります。

特に、ほかの人から受け取ったCSVや外部サービスからダウンロードしたCSVでは、どの文字コードで保存されているかを確認してから読み込むことが大切です。

テキストではないファイルを開いている

UnicodeDecodeErrorは、画像やExcelファイルなど、テキストではないファイルを文字列として読み込んだ場合にも発生します。

例えば、PNG画像を次のようにテキストモードで開くと、Pythonは画像のバイトデータをUTF-8の文字列へ変換しようとします。

with open("image.png", "r", encoding="utf-8") as file:
    data = file.read()

画像データは通常のテキストではないため、UTF-8では正しくデコードできません。

バイナリデータとして読み込む場合は、rではなくrbを指定します。

with open("image.png", "rb") as file:
    data = file.read()

また、Excelファイルを読み込む場合は、open()で直接文字列として読み込むのではなく、openpyxlやpandasなど、ファイル形式に対応したライブラリを使用します。

ファイルの拡張子が.csvなのか、.xlsxなのか、.pngなのかを確認し、形式に合った読み込み方法を選びましょう。

ファイル内のデータが壊れている

文字コードの指定が正しくても、ファイル内の一部に不正なデータが含まれていると、UnicodeDecodeErrorが発生することがあります。

例えば、次のような状況が考えられます。

  • ファイルの一部だけ別の文字コードで保存されている
  • ダウンロードやコピーの途中でデータが壊れた
  • 不正なバイトが含まれている
  • 複数のファイルを誤った方法で結合した

エラーメッセージにposition 100のような位置が表示されている場合は、その付近のデータに問題がある可能性があります。

ただし、表示される位置は行番号ではなく、データ内のバイト位置を表していることがあります。そのため、該当する行を正確に特定できるとは限りません。

文字コードを正しく指定してもエラーが直らない場合は、元のファイルを開き直したり、再度出力したりして、データ自体に問題がないかを確認しましょう。

UnicodeDecodeErrorを解決するときは、最初に文字コードの不一致を確認し、それでも直らない場合にファイル形式やデータの破損を調べると、原因を見つけやすくなります。

UnicodeDecodeErrorのエラー例と修正例

UnicodeDecodeErrorを直すには、エラーが発生したコードと、読み込もうとしているファイルの文字コードを照らし合わせることが大切です。

ここでは、CSVやテキストファイルの読み込みでよくあるエラー例を取り上げ、修正方法を順番に解説します。

cp932のCSVをUTF-8で読み込んでいる

日本語を含むCSVファイルでは、cp932で保存されたファイルをUTF-8として読み込んだことが原因で、UnicodeDecodeErrorが発生する場合があります。

例えば、sales.csvがcp932で保存されているにもかかわらず、次のようにencoding="utf-8"を指定したとします。

with open("sales.csv", "r", encoding="utf-8") as file:
    text = file.read()

print(text)

このコードを実行すると、次のようなエラーが表示されることがあります。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93
in position 12: invalid start byte

Pythonはsales.csvをUTF-8のルールで読み込もうとしています。しかし、ファイル内にはUTF-8では正しく解釈できないバイトが含まれているため、デコード処理に失敗しています。

ファイルがcp932で保存されていることが分かっている場合は、encodingを次のように修正します。

with open("sales.csv", "r", encoding="cp932") as file:
    text = file.read()

print(text)

修正前と修正後の違いを整理すると、次のようになります。

コードの指定実際の文字コード結果
encoding="utf-8"cp932UnicodeDecodeErrorが発生する可能性がある
encoding="cp932"cp932正常に読み込める

大切なのは、エラーが出たからといって、すぐにcp932へ変更することではありません。

ファイルが実際にcp932で保存されていることを確認したうえで指定しましょう。

UTF-8のファイルをcp932で読み込んでいる

UnicodeDecodeErrorは、cp932のファイルをUTF-8で読み込んだ場合だけに発生するわけではありません。

反対に、UTF-8で保存されたファイルをcp932として読み込んだ場合にも、同じようなエラーが発生する可能性があります。

with open("data.csv", "r", encoding="cp932") as file:
    text = file.read()

print(text)

この例でdata.csvがUTF-8で保存されている場合、cp932のルールでは解釈できないデータが見つかり、読み込みに失敗することがあります。

ファイルがUTF-8で保存されているなら、次のように修正します。

with open("data.csv", "r", encoding="utf-8") as file:
    text = file.read()

print(text)

文字コードの組み合わせと結果は、次の表のとおりです。

Python側の指定ファイルの文字コード結果
cp932UTF-8UnicodeDecodeErrorが発生する可能性がある
UTF-8UTF-8正常に読み込める

UnicodeDecodeErrorの解決では、UTF-8とcp932のどちらが優れているかではなく、ファイルとPython側の指定が一致しているかが重要です。

encodingを指定せずにファイルを開いている

open()encodingを指定しなかった場合、Pythonは実行環境の標準文字コードを使ってファイルを読み込みます。

例えば、次のコードでは文字コードが明示されていません。

with open("data.csv", "r") as file:
    text = file.read()

print(text)

この書き方では、パソコンや実行環境によって使用される文字コードが変わる可能性があります。

そのため、自分のパソコンでは正常に動いていても、別の環境で実行するとUnicodeDecodeErrorが発生することがあります。

ファイルがUTF-8で保存されている場合は、次のように指定します。

with open("data.csv", "r", encoding="utf-8") as file:
    text = file.read()

print(text)

ファイルがcp932で保存されている場合は、次のように指定します。

with open("data.csv", "r", encoding="cp932") as file:
    text = file.read()

print(text)

encodingを明示することで、実行環境による違いを減らし、どの文字コードで読み込んでいるのかも分かりやすくなります。

テキストファイルやCSVファイルを扱うときは、できるだけencodingを指定する習慣をつけておきましょう。

pandasのread_csv()でUnicodeDecodeErrorが出る

pandasを使ってCSVファイルを読み込む場合も、文字コードが合っていないとUnicodeDecodeErrorが発生します。

例えば、cp932で保存されたCSVをUTF-8として読み込むと、次のコードでエラーになることがあります。

import pandas as pd

df = pd.read_csv("sales.csv", encoding="utf-8")

print(df)

sales.csvがcp932で保存されている場合は、encodingを次のように変更します。

import pandas as pd

df = pd.read_csv("sales.csv", encoding="cp932")

print(df)

一方、CSVがUTF-8で保存されている場合は、encoding="utf-8"を指定します。

import pandas as pd

df = pd.read_csv("sales.csv", encoding="utf-8")

print(df)

open()pandas.read_csv()の指定方法を比べると、次のようになります。

読み込み方法UTF-8を指定する例cp932を指定する例
open()encoding="utf-8"encoding="cp932"
pd.read_csv()encoding="utf-8"encoding="cp932"

pandasを使う場合でも、基本的な考え方はopen()と同じです。

CSVファイルが実際にどの文字コードで保存されているかを確認し、それと同じ値をencodingに指定します。

BOM付きUTF-8のCSVを読み込んでいる

UTF-8で保存されたCSVの中には、ファイルの先頭にBOMと呼ばれる情報が付いているものがあります。

BOM付きUTF-8のファイルでは、通常のencoding="utf-8"でも読み込める場合がありますが、列名の先頭に見えない文字が付くなど、意図しない結果になることがあります。

そのような場合は、utf-8-sigを指定して読み込みます。

with open("data.csv", "r", encoding="utf-8-sig") as file:
    text = file.read()

print(text)

pandasで読み込む場合も、同じように指定できます。

import pandas as pd

df = pd.read_csv("data.csv", encoding="utf-8-sig")

print(df)

UTF-8とBOM付きUTF-8の主な違いは、次のとおりです。

文字コード指定例主な用途
UTF-8encoding="utf-8"通常のUTF-8ファイル
BOM付きUTF-8encoding="utf-8-sig"ファイル先頭にBOMが付いているUTF-8ファイル

ただし、UnicodeDecodeErrorが発生したからといって、必ずutf-8-sigへ変更すればよいわけではありません。

ファイルがBOM付きUTF-8であることを確認してから使用しましょう。

テキストではないファイルを文字列として読み込んでいる

UnicodeDecodeErrorは、画像やExcelファイルなどをテキストファイルとして開いた場合にも発生します。

例えば、PNG画像を次のように読み込むと、Pythonは画像のデータをUTF-8の文字列へ変換しようとします。

with open("image.png", "r", encoding="utf-8") as file:
    data = file.read()

画像ファイルは通常のテキストではないため、UTF-8として正しくデコードすることはできません。

画像の中身をバイトデータとして読み込む場合は、rではなくrbを指定します。

with open("image.png", "rb") as file:
    data = file.read()

print(type(data))

この場合、読み込まれたデータは文字列ではなく、bytes型になります。

また、Excelファイルを扱う場合は、バイナリモードで開くだけでは表の内容を取得できません。pandasやopenpyxlなど、Excel形式に対応したライブラリを使用します。

import pandas as pd

df = pd.read_excel("sales.xlsx")

print(df)

ファイルの種類に応じた読み込み方法を整理すると、次のようになります。

ファイルの種類主な読み込み方法
テキストファイルopen()
CSVファイルopen()またはpd.read_csv()
画像ファイルopen()のバイナリモード
Excelファイルpd.read_excel()やopenpyxl

文字コードを変更してもエラーが直らない場合は、そもそも読み込もうとしているファイルがテキスト形式なのかを確認してみましょう。

UnicodeDecodeErrorが発生したときは、まずファイルの文字コードとencodingの指定を確認します。それでも解決しない場合は、ファイル形式やデータの状態に問題がないかを調べると、原因を絞り込みやすくなります。

UnicodeDecodeErrorに関するよくある質問

ここでは、PythonのUnicodeDecodeErrorについて、初心者が疑問に感じやすいポイントをまとめます。

エラーメッセージの意味やCSVの文字コード、cp932shift_jisの違いなど、解決するときに迷いやすい点を順番に確認していきましょう。

「utf-8 codec can’t decode byte」とはどういう意味ですか?

'utf-8' codec can't decode byteは、PythonがデータをUTF-8として読み込もうとしたものの、UTF-8の文字として解釈できないバイトが見つかったことを表しています。

例えば、次のようなエラーメッセージが表示されることがあります。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93
in position 12: invalid start byte

このメッセージから分かるのは、PythonがUTF-8を使ってデコードしようとしたことと、途中にUTF-8では読み取れないデータがあったことです。

ただし、このエラーだけでは、正しい文字コードが何であるかまでは分かりません。ファイルがcp932やShift_JISで保存されている可能性もあれば、ファイルの一部が壊れている可能性もあります。

まずは、ファイルの作成元や保存時の設定を確認し、実際の文字コードに合ったencodingを指定しましょう。

CSVを読み込むとUnicodeDecodeErrorが出るのはなぜですか?

CSVを読み込んだときにUnicodeDecodeErrorが出る主な原因は、CSVファイルの文字コードとPython側の指定が一致していないことです。

例えば、cp932で保存されたCSVをUTF-8として読み込むと、エラーが発生する可能性があります。

with open(
    "sales.csv",
    "r",
    encoding="utf-8"
) as file:
    text = file.read()

ファイルがcp932であることが分かっている場合は、次のように修正します。

with open(
    "sales.csv",
    "r",
    encoding="cp932"
) as file:
    text = file.read()

pandasのread_csv()を使う場合も、同じように文字コードを指定します。

import pandas as pd

df = pd.read_csv(
    "sales.csv",
    encoding="cp932"
)

print(df)

CSVという形式そのものが原因ではなく、CSV内のバイトデータをどの文字コードとして読み込むかが問題です。

また、CSVの中に壊れたデータが含まれている場合や、拡張子だけが.csvで実際には別形式のファイルである場合にも、UnicodeDecodeErrorが発生することがあります。

utf-8とcp932のどちらを指定すればよいですか?

UTF-8とcp932のどちらを指定するかは、ファイルが実際にどの文字コードで保存されているかによって決まります。

使い分けの考え方は、次のとおりです。

ファイルの文字コードPythonでの指定
UTF-8encoding="utf-8"
BOM付きUTF-8encoding="utf-8-sig"
cp932encoding="cp932"

UnicodeDecodeErrorが出たときに、UTF-8とcp932を適当に切り替えるだけでは、正しく読み込めたか判断できないことがあります。

エラーが表示されなくても、日本語が文字化けしたり、一部の文字が異なる記号になったりする可能性があるためです。

ファイルを作成したソフトの保存設定や、テキストエディタの文字コード表示を確認し、その結果に合ったencodingを指定しましょう。

cp932とshift_jisはどちらを使えばよいですか?

cp932shift_jisは似ていますが、Pythonでは異なる文字コードとして扱われます。

どちらを使うかは、ファイルが実際にどの文字コードで保存されているかによって判断します。

両者の違いを簡単に整理すると、次のようになります。

指定特徴
encoding="cp932"Windowsの日本語環境で使われることが多い
encoding="shift_jis"日本語向けのShift_JISとしてデコードする

Windows上のソフトや業務システムから出力された日本語CSVでは、cp932が使われていることがあります。

一方で、ファイルの仕様書や保存設定にShift_JISと明記されている場合は、shift_jisを指定します。

ただし、作成元が「Shift_JIS」と案内していても、実際にはWindows向けのcp932を指している場合があります。shift_jisで読み込めないときは、出力元の仕様を確認したうえでcp932も検討しましょう。

errors=”ignore”を指定すれば解決できますか?

errors="ignore"を指定すると、デコードできない部分を読み飛ばして処理を続けられる場合があります。

with open(
    "data.csv",
    "r",
    encoding="utf-8",
    errors="ignore"
) as file:
    text = file.read()

ただし、これはUnicodeDecodeErrorの原因を解決しているわけではありません。

読み取れなかった文字が削除されるため、氏名、住所、商品名、金額などの重要なデータが欠ける可能性があります。エラーが表示されなくなることで、データの欠損に気づきにくくなる点にも注意が必要です。

読み取れない場所を確認したい場合は、errors="replace"を使う方法もあります。

with open(
    "data.csv",
    "r",
    encoding="utf-8",
    errors="replace"
) as file:
    text = file.read()

この場合、デコードできない部分はなどの置換文字として表示されます。

どちらの方法でも元の文字を正確に復元することはできません。基本的には、ファイルの文字コードを確認し、正しいencodingを指定することを優先しましょう。

同じコードなのに別のパソコンではエラーになるのはなぜですか?

encodingを省略していると、実行環境によって使用される標準の文字コードが異なるため、別のパソコンでUnicodeDecodeErrorが発生することがあります。

例えば、次のコードでは文字コードを指定していません。

with open("data.csv", "r") as file:
    text = file.read()

この書き方では、Pythonが実行環境の標準設定を使ってファイルを読み込みます。

ある環境ではファイルと標準の文字コードが一致して正常に動いても、別の環境では一致せず、UnicodeDecodeErrorが発生することがあります。

ファイルがUTF-8であることが分かっている場合は、次のように明示します。

with open(
    "data.csv",
    "r",
    encoding="utf-8"
) as file:
    text = file.read()

ファイルがcp932の場合は、encoding="cp932"を指定します。

実行環境に左右されにくいコードにするためにも、テキストファイルやCSVを読み込むときは、文字コードを明示しておくことが大切です。

UnicodeDecodeErrorが出ない文字コードを自動で選べますか?

Pythonの標準機能だけで、すべてのファイルの文字コードを正確に自動判定することは困難です。

外部ライブラリを使って文字コードを推測する方法はありますが、結果はあくまで推測です。特に、英数字だけのファイルや短い文章では、複数の文字コードで問題なく読めるため、正しく判定できないことがあります。

自動判定を使う場合でも、次の点を確認する必要があります。

確認する内容理由
日本語が文字化けしていないかエラーがなくても誤って読める場合がある
列名やデータが欠けていないか不正な文字が削除される場合がある
作成元の設定と一致しているか推測結果が間違っている可能性がある
行数や列数が正しいか読み込み結果に異常がないか確認するため

重要なファイルでは、自動判定だけに頼らず、保存時の設定や提供元の仕様も確認しましょう。

UnicodeDecodeErrorを例外処理で無視してもよいですか?

try文とexcept文を使えば、UnicodeDecodeErrorが発生してもプログラム全体が停止しないようにできます。

try:
    with open(
        "data.csv",
        "r",
        encoding="utf-8"
    ) as file:
        text = file.read()

except UnicodeDecodeError as error:
    print("ファイルを正しく読み込めませんでした")
    print(error)

ただし、例外処理を追加しても、ファイルを正しく読み込めるようになるわけではありません。

例外処理は、エラーが発生したことを利用者へ知らせたり、別の処理へ切り替えたりするために使います。文字コードの不一致そのものは、正しいencodingを指定して解決する必要があります。

複数の文字コードが想定される場合は、候補を順番に試す方法もあります。

encodings = ["utf-8", "cp932"]

for encoding in encodings:
    try:
        with open(
            "data.csv",
            "r",
            encoding=encoding
        ) as file:
            text = file.read()

        print(f"{encoding}で読み込みました")
        break

    except UnicodeDecodeError:
        print(f"{encoding}では読み込めませんでした")

この方法を使う場合も、正常に読み込めたように見えるだけで文字化けしていないか、内容を確認することが大切です。

まとめ|UnicodeDecodeErrorは文字コードの確認が大切

UnicodeDecodeErrorは、ファイルなどのバイトデータを文字列へ変換できなかったときに発生するエラーです。

多くの場合は、ファイルで使われている文字コードと、open()pandas.read_csv()で指定したencodingが一致していません。

エラーが出たときは、UTF-8やcp932を手当たり次第に試すのではなく、ファイルの作成元や保存時の設定を確認し、実際の文字コードに合った値を指定しましょう。

また、errors="ignore"errors="replace"を使うと処理を続けられる場合がありますが、文字の欠損や置き換えが発生するため、根本的な解決にはなりません。

UnicodeDecodeErrorが発生したときは、次の流れで確認すると原因を見つけやすくなります。

  1. 読み込んでいるファイルとファイル形式を確認する
  2. ファイルの実際の文字コードを調べる
  3. Python側のencodingを一致させる
  4. 読み込み後に文字化けやデータの欠損がないか確認する

エラーメッセージを落ち着いて読み、ファイルの文字コードとPython側の指定を見直せば、多くのUnicodeDecodeErrorは解決できます。

ほかのエラーの意味や直し方を調べたい場合は、「Pythonエラー一覧」も参考にしてください。

あわせて読みたい
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
Pythonエラー一覧|よくあるエラーの意味・原因・直し方
あわせて読みたい
Python入門講座|初心者向け無料カリキュラム
Python入門講座|初心者向け無料カリキュラム
記事URLをコピーしました