如何在Python 2中将字符串转换为字节

lai*_*e9m 3 python python-2.7 python-unicode

我知道这听起来像是一个重复的问题,但这是因为我不知道如何正确地描述这个问题。

由于某种原因,我得到了一堆这样的unicode字符串:

a = u'\xcb\xea'
Run Code Online (Sandbox Code Playgroud)

如您所见,它实际上是汉字的字节表示形式,编码为 gbk

>>> print(b'\xcb\xea'.decode('gbk'))
?
Run Code Online (Sandbox Code Playgroud)

u'?'是我需要的,但是我不知道如何转换u'\xcb\xea'b'\xcb\xea'
有什么建议么?

Mar*_*ers 5

它实际上不是字节表示,仍然是unicode代码点。它们是错误的代码点,因为它是从字节解码的,就像被编码为Latin-1一样。

编码为拉丁文1(其代码点一对一映射到字节),然后解码为GBK:

a.encode('latin1').decode('gbk')
Run Code Online (Sandbox Code Playgroud)

演示:

>>> a = u'\xcb\xea'
>>> a.encode('latin1').decode('gbk')
u'\u5c81'
>>> print a.encode('latin1').decode('gbk')
?
Run Code Online (Sandbox Code Playgroud)