python3中json模块中dump dumps 乱码问题
json.dump
json.dumps
中可以把一些内置的对象序列化为json 对象, 一个是dump 到文件,一个是转成字符串。
现象描述
但是如果字符串中有 中文字符,默认dumps 会把中文 转成 下面的字符
import json
sentence= "中文 frank 123"
json.dumps(sentence)
结果如下:
'"\\u4e2d\\u6587 frank 123"'
在python3 默认使用 UTF-8 编码方式。 中文
就被编码成 4e2u
6587
解决方法
添加参数, ensure_ascii = False
json.dumps(sentence,ensure_ascii=False)
'"中文 frank 123"'
官方文档如下:
If ensure_ascii is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is false, these characters will be output as-is.
如果 ensure_ascii 是 true (即默认值),输出保证将所有输入的非 ASCII 字符转义。如果 ensure_ascii 是 false,这些字符会原样输出。
计算机编码ASCII、GBK、Unicode、UTF-8和URL编码的区别