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

3

我有一个字符串 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
这些应该如何显示?我的Windows系统看到的是"é[x][x]è"代表x,以及"[x][x]"代表y - Right leg
1个回答

6
假设我们讨论的是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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接