python中 json.dumps中文乱码问题解决

 python中 json.dumps中文乱码问题解决

在使用 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 参数来指定编码方式。