出现中文编码乱码的情景
1.服务后端返回值出现中文乱码,或者必须json解码后才能展示
这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False
处理方式
@api.route("/route", methods=['GET'])
def ***():
pass
resu = {'status':stauts,'info':info}
return json.dumps(resu, ensure_ascii=False)
2.上传数据库出现乱码
上传数据库时,json.dumps() python类型的数据时,含有中文字符的,上传后出现中文乱码
还是json的原因
处理方式:
test_id_parse = {"test":"测试","test2":"测试"}
sql = """UPDATE table SET COULMB='{}' """.format(json.dumps(test_id_parse).encode('ascii').decode('unicode_escape'))
cursor.execute(sql)
附上编码方式:
ascii:把所有的字母的大小写,各种符号用二进制来表示,1bytes代表一个字符
Unicode:为了统一世界各国语言的不同,统一用2个bytes代表一个字符,特点:速度快,但浪费空间
utf-8:为了改变Unicode的这种缺点,规定一个英文字符用一个字节表示,一个中文字符用三个字节表示,特点:节省空间,速度慢
gbk:是中文的字符编码,用2个字节代表一个字符
还有一点:
即GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
1)GBK、GB2312 --先转–> Unicode --再转–> UTF8
2)UTF8 --先转–> Unicode --再转–> GBK、GB2312