如何在 python 中正确编码 json 转储

How to encode json dump correctly in python

我有一个 python 3 脚本,它应该从 .csv 文件中获取一些数据并将其写入 json 文件。 在我的处理过程中,编码是正确的,因此德语变音符 ü、ä 或度数符号 ° 就像它们一样(# coding=cp1252 在头部)。

但是当我通过 json.dump() 编写字典时编码消失了...

如何使用正确的编码将字典写入 json 文件?

# -*- coding: cp1252 -*-
import json
from pandas import read_csv

x={"äö": "ü°"}
print(x, json.dumps(x, indent=4))

>>>> {'äö': 'ü°'} {"\u00e4\u00f6": "\u00fc\u00b0"}

这是因为 äöü° 不是 ASCII 字符。

json.dumps 有一个名为 ensure_ascii 的可选参数,它转义非 ASCII 字符,默认设置为 True。您可以通过将此设置为 false 来获得所需的行为。

x={"äö": "ü°"}
print(x, json.dumps(x, ensure_ascii=False, indent=4))