小编Tim*_*tri的帖子

如何在 Python2 中将 utf-8 字节数组解码为字符串?

我有一个表示 utf-8 编码字符串的字节数组。我想将这些字节解码回 Pyton2 中的字符串。我的整个程序依赖Python2,所以我无法切换到Python3。

\n\n
array = [67, 97, 102, **-61, -87**, 32, 70, 108, 111, 114, 97] \n
Run Code Online (Sandbox Code Playgroud)\n\n

-> 咖啡馆\xc3\xa9弗洛拉

\n\n

由于我想要的字符串中的每个字符不一定由数组中的 1 个字节表示,因此我不能使用如下解决方案:

\n\n
"".join(map(chr, array))\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试创建一个函数来逐步遍历数组,每当遇到不在 0-127 (ASCII) 范围内的数字时,创建一个新的 16 位 int,将当前位向左移动 8 以上,然后添加使用按位或运算来计算后面的字节。最后它会使用 unichr() 对其进行解码。

\n\n
result = []\n\n\nfor i in range(len(byte_array)):\n    x = byte_array[i]\n    if x < 0:\n        b16 = x & 0xFFFF # 16 bit\n        b16 = b16 << 8\n        b16 = b16 | byte_array[i+1]\n        result.append(unichr(m16))\n    else:\n        result.append(chr(x))\n\nreturn "".join(result)\n …
Run Code Online (Sandbox Code Playgroud)

python arrays utf-8 python-2.7

5
推荐指数
1
解决办法
8152
查看次数

标签 统计

arrays ×1

python ×1

python-2.7 ×1

utf-8 ×1