Posted at

Windowsの文字コードでハマった場合の対処方法

More than 3 years have passed since last update.


はじめに

Windowsで日本語を含むパスを処理しているときにエラーが発生した。

文字コードはShift-JISを指定しているハズなのに、UnicodeDecodeErrorが発生。

WindowsってShift-JISじゃなかったのか?


対応方法

調べてみると、「WindowsはShift-JISを拡張したCP932」だとのこと。

なので、文字コードをCP932に指定したらすんなり動いた。


サンプルコード


cp932_test.py

# -*- coding: utf-8 -*-

s = '①②③④' # Shift-JISにはなく、CP932にある文字
su = unicode(s, 'utf-8')
print su.encode('cp932')
print su.encode('shift-jis') # UnicodeEncodeErrorになる



おわりに

WindowsのShift-JISは「CP932」ということを認識しましょう。

でないと、ドハマりしてしまいます。