python中文编码问题

出现中文编码乱码的情景

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值