json保存文件乱码

参数 ensure_ascii=False 在使用 Python 的 JSON 库来序列化数据时起到关键的作用,尤其是当数据中含有非 ASCII 字符(如中文、日文、韩文等)的时候。

默认行为 (ensure_ascii=True)

默认情况下(即没有显式设置或设置为 True 时),Python 的 JSON 序列化器会对所有非 ASCII 字符进行转义处理,即将其转换成 Unicode 转义序列形式(形如 \uXXXX)。这意味着原本可以直接阅读的文字会被转化为一系列十六进制数字加上前缀 \u 的形式,对于人类读者来说不易阅读也不直观。

设置效果 (ensure_ascii=False)

当你将参数设置为 ensure_ascii=False 后,JSON 序列化器会直接输出非 ASCII 字符而不进行转义操作。这样一来,如果数据中有中文或其他非英语文字的话,它们将以原样被写入到 JSON 文件中,保持原有的可读性和完整性。

实际影响及应用场景

提高可读性:对于含有大量非 ASCII 字符的数据集而言,使用 ensure_ascii=False 可以显著提升生成 JSON 文件的人类可读性。
减少文件大小:由于省略了转义序列所需的额外字符(如 \u 和四个十六进制数字),使用该参数还可以略微减小 JSON 文件的整体体积。
国际化需求:对于需要在全球范围内共享或处理多语言数据的应用程序而言,这一参数设置有助于维护数据的一致性和本地化特性。
总之,通过简单地将 ensure_ascii 参数设为 False,你可以使 JSON 数据更易于理解和使用,特别是在涉及多种语言和地区的情境下。

with open('tmp.json', 'w', encoding='utf-8') as file:
    json.dump(ret_lis, file, indent=4, ensure_ascii=False)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值