【Python/json】「UnicodeDecodeError: ‘cp932’ codec can’t decode~」エラーの対処方法

Python用モジュール「json」で「UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x8f in position 10: illegal multibyte sequence」とうエラーが出た場合の対処方法についてソースコード付きでまとめました。

JSON形式ファイルのロード時に発生するエラー

Python用モジュール「json」を用いて、JSON形式ファイルのロードをすると次のようなエラーが発生することがあります。

コード

# -*- coding:utf-8 -*-
import json

#JSON ファイルの読み込み
f = open('test.json', 'r')
json_data = json.load(f)

print(json_data)
f.close()

エラー

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

解決方法

原因は、Windows環境を使用しているとjson.loadメソッドが「デフォルトでcp932でコーディング」されるからだそうです。
そのため、UTF-8のJSONファイルを読み込み時は、UTF-8でコーディングする様にjson.loadメソッドに引数で次のように指定します。

# -*- coding:utf-8 -*-
import json

#JSON ファイルの読み込み
f = open('test.json', 'r', encoding="utf-8_sig")
json_data = json.load(f)

print(json_data)
f.close()
関連記事
1 【Python】jsonファイルの扱い方【Python】Webスクレイピング入門【Python】ネットワークプログラミング入門
2 Python入門 基本文法

コメント