如何将python Unicode字符串转换为字节

时间:2017-07-13 07:55:53

标签: python string unicode

我有一个字符串x,如下所示

x = "\xe9\x94\x99\xe8\xaf\xaf"

此字符串应为Unicode字符串,但无法正确显示(打印)。

字符串y是以b开头的Unicode字符串/字节,而y可以正确显示y.decode('utf-8')

y = b"\xe9\x94\x99\xe8\xaf\xaf"

我的问题是如何将x转换为y?

1 个答案:

答案 0 :(得分:3)

假设我们正在谈论Python3,那么Unicode字符串x长度为6个代码点。恰好是每个代码点都在0x000xff范围内(ASCII子集)。我们可以使用raw_unicode_escape编解码器获取确切的字节字符串,如下所示:

>>> x = "\xe9\x94\x99\xe8\xaf\xaf"
>>> y = x.encode('raw_unicode_escape')
>>> y
b'\xe9\x94\x99\xe8\xaf\xaf'
>>> y.decode('utf8')
'错误'

请注意,这仅在字符串x仅包含Unicode的ASCII子范围时才有效;否则你只会获得转义的Unicode代码点(正如编解码器的名称所示):

>>> "šž".encode('raw_unicode_escape')
b'\\u0161\\u017e'