My Tech Life

Memo by a Japanese Software Developer in his late 50s.

'cp932' codec can't encode character '\x##' in position ####: illegal multibyte sequence

'cp932' codec can't encode character '\xa9' in position 3337: illegal multibyte sequence

Windowsで、Pythonを動かすとよく見る例外。Linuxだと見ない。

エンコード・デコードの深みを調査する前に、これを確認すること。

自分への備忘録。

 

スタックトレースの該当行では、普通の出力処理。

print(some_text)

 

スクリプトコマンドラインから実行し、

そのまま出力すると、例外にならないが、

python some_script.py

 

出力をリダイレクトすると、例外になる

python some_script.py > result.txt

 

手軽なリダイレクトはやめて、

面倒だが、正当なファイル書き込みのオープンを使い、

エンコーディングを指定することで改善。

with open(outputfilename, 'w', encoding='utf-8') as fout:

 

つまり、コマンドライン実行でのリダイレクトの例外の原因は、

エンコーディングの指定ができなかったことと思われる。