2025年8月17日日曜日

pythonで日本語を含むjsonを文字化けさせず(\u形式の表記にせず)に保存する


pythonで日本語を含むdict(キーと値を持つデータ)を何も考えず保存したら文字化けしました。(\uで始まる文字表記になりました。)
#!/usr/bin/python
import json

str_json = "{\"どこ\":\"そこ\"}"
with open("output.json", "w") as f:
json.dump(str_json, f)
{"\u3069\u3053": "\u305d\u3053"}

ファイルをutf-8で開き、json.dump時にensure_asciiを無効にすれば良いと分かりました。
#!/usr/bin/python
import json

data = {"どこ":"そこ"}
with open("output.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False)
{"どこ": "そこ"}

参考
Saving UTF-8 texts with json.dumps as UTF-8, not as a \u escape sequence

0 件のコメント :