如何在 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))
我有一个 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))