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")

    完美解决问题

  • 相关阅读:
    ARC 080
    CodeForces
    [Lydsy1806月赛] 路径统计
    AGC 022 C
    AGC 022 B
    AGC 020 B
    UVA
    AGC 018 A
    python
    python
  • 原文地址:https://www.cnblogs.com/delav/p/9149098.html
Copyright © 2011-2022 走看看