在使用 json.dumps
将 Python 对象转换为 JSON 字符串时,如果对象中包含中文字符,可能会出现中文乱码的问题。这是因为 json.dumps
默认使用 ASCII 编码,而中文字符不在 ASCII 编码范围内。
为了避免中文乱码问题,可以通过设置 ensure_ascii
参数为 False
来使用 UTF-8 编码,例如:
import json
data = {'name': '张三', 'age': 18}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
输出结果为:
{"name": "张三", "age": 18}
如果不设置 ensure_ascii
参数或将其设置为 True
,则输出结果为:
{"name": "\u5f20\u4e09", "age": 18}
其中 \u5f20\u4e09
表示的是中文字符的 Unicode 编码。
除了设置 ensure_ascii
参数,还可以在调用 json.dumps
时设置 encoding
参数来指定编码方式,例如:
import json
data = {'name': '张三', 'age': 18}
json_str = json.dumps(data, encoding='utf-8', ensure_ascii=False)
print(json_str)
输出结果与上面的例子相同。不过需要注意的是,encoding
参数只在 Python 2 中有效,在 Python 3 中已经被移除了。在 Python 3 中,应该使用 ensure_ascii
参数来指定编码方式。