参数 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)