Python保存为json中文Unicode乱码解决json.dump()
在Python中使用json.dump()
保存为JSON格式文件时,如果包含中文字符,可能会遇到乱码问题。这通常是因为JSON默认使用的编码是UTF-8,而Python的字符串在内存中是以Unicode编码的。
为了解决这个问题,可以在使用json.dump()
之前,确保所有字符串都是UTF-8编码。这可以通过在open()
函数中指定编码参数encoding='utf-8'
来实现,或者在写入前显式地将字符串转换为UTF-8编码。
以下是一个示例代码,演示如何正确保存含有中文的数据到JSON文件,避免乱码:
import json
data = {
'name': '中文名称',
'description': '这是一段中文描述。'
}
# 方法1:在打开文件时指定编码为utf-8
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, sort_keys=True, indent=4)
# 方法2:在保存前将字符串转换为utf-8编码的字节串
with open('data.json', 'wb') as f:
utf8_data = json.dumps(data, ensure_ascii=False).encode('utf-8')
f.write(utf8_data)
在这两种方法中,ensure_ascii=False
参数确保不再将字符串编码为ASCII,而是直接使用UTF-8编码。使用方法1时,通过在open()
中指定encoding='utf-8'
,保证了文件写入时使用UTF-8编码。使用方法2时,通过调用encode('utf-8')
将字典转换为UTF-8编码的字节串,然后写入文件。
两种方法都可以有效地避免中文乱码问题,并正确保存中文字符到JSON文件。
评论已关闭