LoginSignup
10

More than 5 years have passed since last update.

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

Posted at

はじめに

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」ということを認識しましょう。
でないと、ドハマりしてしまいます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10