转换UTF-8的八进制表示

时间:2018-05-31 09:46:31

标签: python-3.x encoding decoding

我有一个这样的变量:

>>> s = '\\320\\227\\320\\264\\320\\260\\320\\275\\320\\270\\320\\265 \\320\\261\\321\\213\\320\\262\\321\\210\\320\\265\\320\\271'
>>> print(s)
\320\227\320\264\320\260\320\275\320\270\320\265 \320\261\321\213\320\262\321\210\320\265\320\271

这包含字符串“Зданиебывшей”的UTF-8编码的八进制转义表示(八进制320 227 =十六进制D0 97 = UTF-8表示“З”)。如何将此字符串解码为“Зданиебывшей”?

1 个答案:

答案 0 :(得分:0)

这有点像黑客。

s = '\\320\\227\\320\\264\\320\\260\\320\\275\\320\\270\\320\\265 \\320\\261\\321\\213\\320\\262\\321\\210\\320\\265\\320\\271'

b = bytes([int(i, 8) for i in s.split("\\")[1:]])

print(b.decode("utf8"))

收益率:Зданиебывшей

或使用codecs模块。

b2 = codecs.escape_decode(s)[0]
print(b2.decode("utf8"))

哪会产生相同的结果。