我有一个表示utf-8编码字符串的字节数组。我想把这些字节解码成Pyton2中的字符串。我的整个程序依赖Python2,所以不能切换到Python3。
array = [67, 97, 102, **-61, -87**, 32, 70, 108, 111, 114, 97]
->;咖啡馆
因为我想要的字符串中的每个字符不一定都由数组中的1个字节表示,所以我不能使用如下解决方案:
"".join(map(chr, array))
我试图创建一个函数来遍历数组,每当遇到不在0-127(ASCII)范围内的数字时,创建一个新的16位int,将当前位向左移动8位以上,然后使用逐位OR添加下一个字节。最后,它将使用unichr()对其进行解码。
result = []
for i in range(len(byte_array)):
x = byte_array[i]
if x < 0:
b16 = x & 0xFFFF # 16 bit
b16 = b16 << 8
b16 = b16 | byte_array[i+1]
result.append(unichr(m16))
else:
result.append(chr(x))
return "".join(result)
然而,这是不成功的。
下面的文章很好地解释了这个问题,并包含了一个nodeJS解决方案:
http://ixti.net/development/node.js/2011/10/26/get-utf-8-string-from-array-of-bytes-in-node-js.html
目前没有回答
相关问题 更多 >
编程相关推荐