← 返回学习笔记
编程基础

学习手记 / 02

读写 JSON 时,把中文编码写清楚

区分文件编码与 JSON 转义,让配置文件里的中文保持可读。

文件怎样保存文字,与 JSON 怎样表示字符串,是两个相关但不同的问题。

一个完整的读写示例

用 UTF-8 打开文件,明确文字与字节之间的转换方式。下面的示例会在当前目录创建 note-example.json;如果文件已经存在,写入模式会覆盖它。

import json

data = {"title": "学习笔记", "tags": ["Python", "JSON"]}

with open("note-example.json", "w", encoding="utf-8") as file:
    json.dump(data, file, ensure_ascii=False, indent=2)

with open("note-example.json", "r", encoding="utf-8") as file:
    restored = json.load(file)

assert restored == data

这几个参数分别做什么?

  • encoding="utf-8" 决定文件的文字编码。
  • ensure_ascii=False 让非 ASCII 字符直接显示,而不是写成 Unicode 转义;它不负责指定文件编码。
  • indent=2 为输出添加缩进,方便阅读。

留意数据类型

JSON 对象的键是字符串。Python 字典的部分非字符串键在序列化时可能被转换,因此任意 Python 对象并不一定都能无损往返。读取外部文件时,还应处理文件不存在、格式错误和字段缺失。

学习小结

编码写明确,转义按阅读需要选择,再检查读回来的数据是否符合预期。

延伸阅读

Python 官方文档:JSON 编码与解码 ↗