【Python】jsonモジュールでdump()を使ったとき日本語が文字化けしてしまう

スポンサーリンク

課題

Pythonで整形されたjsonデータを表示や保存する時、json.dump()を利用する。

このとき、何もしないと下記のように文字化けしてしまう。
dump()によってファイル書き込みする時も同様)

main.py

import json

data = {'ほげ': 'ふが'}
print(json.dumps(data, indent=2))

実行結果

$ python main.py
{
  "\u307b\u3052": "\u3075\u304c"
}

原因

デフォルトで非ASCII文字がエスケープされてしまうようになっていることが原因。

ensure_ascii が (デフォルト値の) true の場合、出力では入力された全ての非 ASCII 文字はエスケープされていることが保証されています。ensure_ascii が false の場合、これらの文字はそのまま出力されます。

https://docs.python.org/ja/3/library/json.html

解決策

dump()もしくはdumps()の引数に、「ensure_ascii=False」を指定する。

公式ドキュメント:https://docs.python.org/ja/3/library/json.html

main.py

import json

data = {'ほげ': 'ふが'}
print(json.dumps(data, indent=2, ensure_ascii=False))

実行結果

$ python main.py
{
  "ほげ": "ふが"
}
タイトルとURLをコピーしました