Python十六进制转码问题

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

例如我需要转码十六进制字符串 '\xe8\xa7\xa3\xe7\xba\xa6\xe6\x88\x90\xe5\x8a\x9f' ,使用过以下几种方法,不是出错就是乱码

a = '\xe8\xa7\xa3\xe7\xba\xa6\xe6\x88\x90\xe5\x8a\x9f'
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就可以了

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

 完美解决问题

猜你喜欢

转载自www.cnblogs.com/delav/p/9149098.html