通过微信支付接口下单后,下单如果成功的话不会出现中文,所以一切正常,但是失败就会返回中文提示,所以出现了一些乱码的情况,原因是使用错误的编码对返回信息进行了解码,然后显示给我的是一个包含字节的字符串,一开始没搞懂,总想直接去decode,但是由于是字符串,所以是不能直接解码的,然后我又先是encode再decode,这种方法也是行不通的,因为是相当于对于当前这个包含字节的字符串进行编码和解码,所以是无法获取原生信息的,然后的话在baidu到解决方法了,代码如下:
>>>str1 = '订åx8dx95åx8fx91çx94x9fè¿x87éx80x80款ï¼x8céx80x80款详æx83x85请æx9f¥è¯¢éx80x80款åx8dx95' >>>str1 '订åx8dx95åx8fx91çx94x9fè¿x87éx80x80款ï¼x8céx80x80款详æx83x85请æx9f¥è¯¢éx80x80款åx8dx95' >>>bytes(str1,'l1') b'xe8xaexa2xe5x8dx95xe5x8fx91xe7x94x9fxe8xbfx87xe9x80x80xe6xacxbexefxbcx8cxe9x80x80xe6xacxbexe8xafxa6xe6x83x85xe8xafxb7xe6x9fxa5xe8xafxa2xe9x80x80xe6xacxbexe5x8dx95' >>>bytes(str1,'l1').decode("utf-8") '订单发生过退款,退款详情请查询退款单' >>>unicode = _ >>>unicode '订单发生过退款,退款详情请查询退款单' >>>utf8 = unicode.encode('utf-8') >>>utf8 b'xe8xaexa2xe5x8dx95xe5x8fx91xe7x94x9fxe8xbfx87xe9x80x80xe6xacxbexefxbcx8cxe9x80x80xe6xacxbexe8xafxa6xe6x83x85xe8xafxb7xe6x9fxa5xe8xafxa2xe9x80x80xe6xacxbexe5x8dx95'
关键在于bytes(str, 'l1)这个步骤,通过这个转换,可以获得原生的字节数据,只要这些字节的编码,就可以直接进行解码了,从而消除乱码的情况。