zoukankan      html  css  js  c++  java
  • Python十六进制转码问题

    使用Python的decode函数转码十六进制的字符串时,会出现UnicodeDecodeError: 'utf8' codec can't decode byte 0xba in position 3: invalid start byte的错误!

    例如我需要转码十六进制字符串 'xe8xa7xa3xe7xbaxa6xe6x88x90xe5x8ax9f' ,使用过以下几种方法,不是出错就是乱码

    a = 'xe8xa7xa3xe7xbaxa6xe6x88x90xe5x8ax9f'
    1. s1 = a.decode('utf-8')
    
    2. s2 = a.decode('unicode_escape')
    
    3.  c = a.encode('raw_unicode_escape')
        b = repr(c)
        s3 = unicode(eval(b), "gbk").encode('utf8')

    我们看看decode函数的源码,可以看到有如下注释:

    decode函数的第二个参数默认是strict,我们只要把它改成ignore就可以了

    ignore:忽视无法解码的字符

    replace:替换无法解码的字符

    s = a.decode('utf-8', 'ignore')

    或者

    s = a.decode("string_escape")

    完美解决问题

  • 相关阅读:
    1022 D进制的A+B
    1021 个位数统计
    L1-040 最佳情侣身高差
    Celery--基本使用
    Celery--安装
    Celery--简介
    RabbitMQ--常用命令
    RabbitMQ--RPC实现
    RabbitMQ发布订阅
    RabbitMQ基本使用
  • 原文地址:https://www.cnblogs.com/delav/p/9149098.html
Copyright © 2011-2022 走看看