在Python 3中,假设我有以下代码:
>>> thai_string = 'สีเ'
使用encode
会给出:
>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'
我的问题是:如何让
encode()
返回使用\u
而不是\x
的bytes
序列?以及如何将它们解码回Python 3的str
类型?我尝试使用内置的
ascii
,但是它会返回:>>> ascii(thai_string)
"'\\u0e2a\\u0e35'"
但是这似乎不太对,因为我无法解码它以获取 thai_string
。
Python 文档 告诉我:
\xhh
转义十六进制值为hh
的字符\uxxxx
转义十六位十六进制值为xxxx
的字符
文档说,\u
仅用于字符串文字,但我不确定这意味着什么。这暗示我的问题有缺陷吗?
.decode('utf-8')
是怎么样的呢?Python 中的字符串不是本来就是 Unicode 吗? - Zizouz212thai_string
和ascii(thai_string)
都没有decode
方法,而thai_string.encode('utf-8').decode('utf-8')
会让我回到起点,即thai_string
,这不是期望的输出。 - Michael Currie\u
相关的内容:https://docs.python.org/3/reference/lexical_analysis.html和https://docs.python.org/3/library/codecs.html#encodings-and-unicode。 - 0 _