パハットノート

※当サイトではGoogleアドセンス広告を利用しています

「UnicodeDecodeError: 'cp932' codec can't decode~」の解決策



遭遇したエラー

Pythonでテキストファイルを読み込むために with open関数を使って次のプログラムを作成しました。

with open('sample.txt', mode='r') as f:
    print(f.readlines())


しかし、実行すると次のようなエラーが出てしまいました。

UnicodeDecodeError: 'cp932' codec can't decode~





解決策

テキストのエンコード形式が原因でした。
先ほど読み込もうとした「sample.txt」をwindows11のメモ帳で開くと次のようになっていました。
UTF-8形式になっている

こんな感じでUTF-8形式で記述されたファイルは
encoding="utf-8"
というようにエンコード形式を指定して読み込まないといけないみたいです。

そのため、先ほどのプログラムは以下の様に書き換えると正しく動作します。

with open('sample.txt', mode='r', encoding="utf-8") as f:
    print(f.readlines())


実行結果

['あいうえおかきくけこ']





「encoding="utf-8"」でエラーが出るとき

逆に「encoding="utf-8"」で次のようなエラーが出る場合もあります。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82~


その場合はテキストのエンコード形式が次のようにUTF-8でない可能性が高いです。
ANSI形式になっている

windows11のメモ帳なら保存の時にエンコード形式を選択できるので適切なものを選んで保存しましょう。
エンコード形式の変更