不知道之前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'))