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を指定する。
対象ファイルのエンコーディングを確認する

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

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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