ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【python】windows 環境で CP932 以外のファイルを開こうとしたらエラーになった話

症状

エラー内容

windows 環境で python のスクリプトを作成していたら utf-8 のファイルを開こうとしたら以下のようなエラーが出ました。

UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence

コード

ファイルを開こうとした処理は以下のような感じ...

try:
    f = open(os.environ.get("SAMPLE_ELEMENT"), 'r')
    self.element = json.load(f)
except:
    raise ExpectedError("the element json file cannot be found.")

原因

Windows環境を使用しているとデフォルトがcp932でコーディングされるようで、CP932以外のファイルを開こうとするとエラーになるようでした。

回避方法

utf-8のファイルを開く場合は「encoding="utf-8"」という記述を加えれば回避できました。

try:
    f = open(os.environ.get("SAMPLE_ELEMENT"), 'r', encoding="utf-8")
    self.element = json.load(f)
except:
    raise ExpectedError("the element json file cannot be found.")