zoukankan      html  css  js  c++  java
  • 包含字节的字符串的解决办法

    通过微信支付接口下单后,下单如果成功的话不会出现中文,所以一切正常,但是失败就会返回中文提示,所以出现了一些乱码的情况,原因是使用错误的编码对返回信息进行了解码,然后显示给我的是一个包含字节的字符串,一开始没搞懂,总想直接去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)这个步骤,通过这个转换,可以获得原生的字节数据,只要这些字节的编码,就可以直接进行解码了,从而消除乱码的情况。

  • 相关阅读:
    POJ-1004-Finanical Management
    POJ-1003-hangover
    第一次写博客,想了很久要给自己留一个什么样的开始
    从exchange2010上面删除特定主题或特定时间的邮件
    STM32 一个定时器产生4路 独立调频率,占中比可调,脉冲个数可以统计。
    光电耦合
    STM32 定时器级联
    Eclipse 创建新的workspace
    一次提交,多文件上传
    Grid标签计算结果集中的合计行
  • 原文地址:https://www.cnblogs.com/zzy0306/p/8377566.html
Copyright © 2011-2022 走看看