编码原理
https://www.cnblogs.com/284628487a/p/5584714.html
python3中对文本和二进制做了比较清晰的区分。python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示,所以不会将str和byte混在一起。在实际应用中我们经常需要将两者进行互转
字符串通过编码转换为字节码,字节码通过解码转换为字符串
https://blog.youkuaiyun.com/qq_29053519/article/details/79170519
str—>(encode)—>bytes,bytes—>(decode)—>str
“\u”后的16进制字符串是相应汉字的utf-16编码。python里decode()和encode()为我们提供了解码和编码的方法。其中decode(‘unicode_escape’)能将此种字符串解码为unicode字符串。
这个是重点
这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False:
import json
print json.dumps(‘中国’)
“\u4e2d\u56fd”
print json.dumps(‘中国’,ensure_ascii=False)
“中国”
可以这样理解 json 已经把 Python的类型转化为传输可以识别的类型,已经为字符串了,
如果继续使用编码,就将字符串又转换为计算机识别的字节格式
如果 中文已经变为了字符串,就不要使用编码了