komekichix’s diary

日々の仕事、生活でぶち当たった問題の解決策を書き残しています。あなたのお役に立てれば幸いです。

【Python】UnicodeEncodeError: 'cp932' codec can't encode character

Windowspythonでprint関数を使用すると、 UnicodeEncodeError: 'cp932' codec can't encode character が発生することがあります。
理由と対処法を以下に記します。

Pythonでは文字列はUTF-8で処理されます。
一方、Windowsでは標準出力へはCP932(シフトJISコード)で処理されます。
このため、CP932に変換出来ない文字コードに対しては、UnicodeEncodeError例外が発生するのです。

以下のようにしておくとCP932に存在しない文字は、'?'に置き換わるとともにエラーを回避できます。
b = a.encode('cp932', 'replace')
print(b.decode('cp932'))


下記のサイトにお世話になりました。ありがとうございます。
(Windows) Python3でのUnicodeEncodeErrorの原因と回避方法 - Qiita
https://qiita.com/butada/items/33db39ced989c2ebf644