Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

'cp932' codec can't encode character ~ への対応

同僚が作成したシェルスクリプトを実行しときに、'cp932' codec can't encode character '\u2013' in position 231: illegal multibyte sequenceというエラーコメントが出た際に、解決したときのメモです。
※ シェルスクリプトだけでなくpythonでも同様のエラーが発生する可能性があるようです。

発生したエラー

******@forET MINGW64 ~/Downloads
$ ./dynamo_diff.sh
'cp932' codec can't encode character '\u2013' in position 231: illegal multibyte sequence

解決方法

コントロールパネルから言語設定を変更する

f:id:overworker:20210228083938p:plain:w500
f:id:overworker:20210228084056p:plain:w300

Unicode(UTF-8)を選択する

  • ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用(U)にチェックを入れる
f:id:overworker:20210228084156p:plain:w300

私の環境では上記変更だけで、シェルスクリプトは動くようになりました。

弊害

この設定変更を放置したところ、いくつかの弊害が生じました。 影響の範囲は不明ですが、OSの設定を変更していることになると思うので影響が出るのは当然なきがします、、

  • 他のツール(Java系)のコンソール出力が文字化けするようになってしまいました。
  • Excelのマクロが想定通り動作しなくなりました。


シェルスクリプトはその場だけだったので、「設定元に戻しておこうかな~!」って感じです。