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

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

a = u'\xcb\xea'

可以看到,实际上是一个汉字的bytes表示,在gbk中编码
>>> print(b'\xcb\xea'.decode('gbk'))
岁
u'岁' 是我需要的,但我不知道如何将 u'\xcb\xea' 转换为 b'\xcb\xea'
有什么建议么?

最佳答案

它不是真正的字节表示,它仍然是 unicode 代码点。它们是错误的代码点,因为它是从字节解码的,就好像它被编码为 Latin-1。

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

a.encode('latin1').decode('gbk')

演示:
>>> a = u'\xcb\xea'
>>> a.encode('latin1').decode('gbk')
u'\u5c81'
>>> print a.encode('latin1').decode('gbk')
岁

关于python - 如何在 Python 2 中将字符串转换为字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23521361/

10-11 20:13