如何使用 \u 转义码对 Python 3 字符串进行编码?

How to encode Python 3 string using \u escape code?

在Python3中,假设我有

>>> thai_string = 'สีเ'

使用encode得到

>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'

我的问题:如何使用 \u 而不是 \x 来获得 encode() 到 return 的 bytes 序列?我怎样才能 decode 将它们恢复为 Python 3 str 类型?

我尝试使用 ascii 内置函数,它给出了

>>> ascii(thai_string)
"'\u0e2a\u0e35'"

但这似乎不太正确,因为我无法对其进行解码以获得 thai_string

Python documentation 告诉我

文档说 \u 仅用于字符串文字,但我不确定那是什么意思。这是否暗示我的问题有一个有缺陷的前提?

您可以使用 unicode_escape:

>>> thai_string.encode('unicode_escape')
b'\u0e2a\u0e35\u0e40'

注意encode()总是return一个字节串(bytes)和unicode_escape编码is intended to:

Produce a string that is suitable as Unicode literal in Python source code