python UnicodeDecodeError ‘cp932’ codec can’t decode byte

Python
本ページはプロモーションが含まれています

簡単なスクリプトを書いていた時に「UnicodeDecodeError ‘cp932’ codec can’t decode byte〜」とメッセージが。
これよく見るやつですね。

WindowユーザーでPythonを使う人は1度はみた事があるメッセージと思います。
最近プログラムをしておらず、久しぶりにこのメッセージが出ました。

エラーメッセージ

「これって何のエラーだっけ?」となったのでメモ
表示されるメッセージは以下のようなものです

UnicodeDecodeError: 'cp932' codec can't decode byte〜

「〜」以降はエンコーディング出来なかった文字列により異なります。

対処方法

このエラーが出る大半の原因がファイルの読み込み時ではないかと思います。
実際僕が出したソースコードではopenの時にencodingを指定していませんでした。
抜粋です

file_stream = open(file_name, mode="r")

Pythonはデフォルトでエンコーディングでは「UTF-8」を使用していますが、「cp932」はMicrosoftがShift_JIS規格を拡張して使っている独自の規格です。

sjisとutf-8で変換がうまくいかない事により出るエラーですね。

Pythonでファイルオープンする時は明示的にencodingを指定するのが鉄則。
(入門書などに必ず書いていますが、すっかり忘れてました)

file_stream = open(file_name, mode="r", encoding="utf-8")

他に注意する点としては読み込むファイルが「Shift-jis」になっていないかも注意が必要ですね。
Windowでファイルを作成するとsjisになっている事があるので意外と気づきにくいです。

非常に簡単ですが、openにはencodingを指定する。
対象ファイルのエンコーディングを確認する

のチェックが重要だなと。

お役に立ったのならば嬉しいです。

タイトルとURLをコピーしました