課題
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 { "ほげ": "ふが" }