windowsでpythonでエンコードエラーUnicodeDecodeError

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:

ライブラリーによっても作法が違うという七面倒くささ。臭い臭い。

コメント

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