簡単なスクリプトを書いていた時に「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を指定する。
対象ファイルのエンコーディングを確認する
のチェックが重要だなと。
お役に立ったのならば嬉しいです。