Pythonでエラー発生’cp932′ codec can’t encode characterを解消する方法

python

Macで作成したPythonプログラム。
Windows環境で実行すると「’cp932′ codec can’t encode character」というエラーが出て止まってしまう。Macではエラーは出なかったのに。

その原因と解消方法を紹介します。

エラーが発生した原因

「’cp932′ codec can’t encode character」というエラーですが、これはcp932という文字コードで扱えない文字があるために発生するエラーです。

cp932とは、いわゆる日本語 (シフト JIS) です。

デフォルトエンコードがMacではUTF-8で、WindowsはShift-JISです。
この違いのためMacで発生しなかったエラーがWindowsで発生したのです。

「’cp932′ codec can’t encode character」は、UTF-8では扱えるがShift-JISでは扱えない文字があった場合に発生します。

エラーが発生していた箇所

path_w = File_name
with open(path_w, mode=’a’) as f:
f.write(Variable_name)

「with open(path_w, mode=’a’) as f:」の行です。

ファイル「File_name」を追記書き込みモード開いて変数「Variable_name」の内容をファイルに追記書き込みするというコードです。

この中でエンコードの指定をしていなかったためにエラーが発生しました。

エラー解消方法

open関数でエンコード「encoding=’UTF-8’」を指定します。

path_w = File_name
with open(path_w, mode=’a’, encoding=’UTF-8′) as f:
f.write(Variable_name)

これでUTF-8で書き込みをするためエラーは発生しなくなります。

コメント