Python 强行utf-8解码

不知道之前Python能不能将一串二进制数据强行解码,但是我使用python3.5没找到这个功能,就自己写了一个,我不是很了解字符集方面的知识,可能存在错误

'''
2016.7.5
强行解码
输入:
    context:二进制数据
    method:解码的方式
输出:
    掺杂解码结果和未解码的数据
'''
import sys

def forcedecode(context,method = 'utf-8'):   
    pos = 0
    maxpos = len(context)
    if maxpos == 0:
        print('数据长度为0')
        return None
    result = ''
    while pos < maxpos:
        try:
            ##单个数据解码
            str1 = context[pos:pos+1]
            result += str1.decode(method)
            pos += 1
        except:
            try:
                ##两个数据解码
                str2 = context[pos:pos+2]
                result += str2.decode(method)
                pos += 2
            except:
                try:
                    ##三个数据解码
                    str3 = context[pos:pos+3]
                    result += str3.decode(method)
                    pos += 3
                except:
                    try:
                        ##解码失败,将数据转换为字符串
                        result += context[pos:pos+1].hex()
                        pos += 1
                    except:
                        (ErrorType, ErrorValue, ErrorTB) = sys.exc_info()
                        print("forcedecode: ", ErrorValue)
                        break
    return result

if __name__ == '__main__':
    context = '0030E7A4BCE9879100E7A4BC99'
    print(forcedecode(context,'utf-8'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值