UnicodeEncodeError に対処する

Posted on Wed 30 January 2019 in Make everything as code

こんなことを言っていました。

Python を Windows にインストールして、まずはバッチファイルや VBA を Python に置き換える予定です。

バッチファイルの置き換えに挑戦しました。Pandoc に Markdown から HTML を生成させるバッチファイルを置き換えました。ついでなので Pandoc を使わない方向でトライしました。

出ました、 UnicodeEncodeError そして UnicodeDecodeError 。読み込んむファイルも utf-8 で書いてあって、 Python3 はデフォルトで utf-8 であるはず。対処法はわかってみればそれほど難しくはありませんでしたが、一体何が起こっているのかさっぱりわからず、かなりの時間を食われてしまいました。

ファイルを開くときに、open() のオプションで errors を指定してやれば良いようです。

ignore にしたので、エラーになる文字は消失してしまうはずなのですが、そういうことも起きていないようでした。0x93 の文字が問題のようでしたが、この文字何でしょう?

コマンドプロンプトの文字コードが cp932 なのが絡んでいるのでしょうが、テキストエディタで utf-8 に直しても起こります。何でしょう?

コマンドプロンプトからリダイレクトして作ったファイルで躓いたので、そのあたりが問題かもしれません。こんな感じのエラーでした。(思い出しながら検索したエラーメッセージなので正確性は?です。)

UnicodeDecodeError: 'cp932' codec can't decode byte 0x8d in position 143: illegal multibyte sequence

open() に encoding='utf-8' 指定したら OK だったという記事も多かったですが、それではだめでした。