UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x86
ビル・ゲイツ的エラーの理由
(NECとIBMも自己中過ぎるぞ)
Windows環境でファイル入出力や標準出力を行う際、python標準のunicodeのutf-8からCP932へ変換しなければならないケースではUnicode –> CP932
への変換処理が走る。
CP932がやばい、shift-jisと思っているものがwindowsではCP932という亜種だということらし。
これじゃ UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x86
というエラー文を見てもチンポンカンポンですわ。
対応
with open(file_name, “r”,encoding=”utf-8_sig”) :
utf-8_sigにエンコードしつつファイルをオープンする
sigって何?signatureか、サインとか記号という意味の?
まあ、今回は動いた。忘れた頃にまた出て、それが又微妙に違う原因で半日潰すことだろう。
後日pythonからエクセルファイルを読み込む時これ系のエラーが出た。
私は落ち着いて,encording=’utf-8_sig’を付け足してエラーを回避できた。
(↓aim_fileは(絶対path+ファイル名))
workbook1 = openpyxl.load_workbook(aim_file, data_only= True)
これは読み込める
with open(aim_file) as f:
これはエラーが出るのでこう直す
with open(aim_file,encoding=’utf-8_sig’) as f:
ライブラリーによっても作法が違うという七面倒くささ。臭い臭い。
コメント