Python中的字符和字节

问题描述 投票:-1回答:1

[阅读this tutorial时,我发现__unicode____str__方法之间存在以下差异:

由于存在这种差异,在混合物2中还有另一个dunder方法,用于控制Python 2:__unicode__中的字符串转换。在Python 2中,__str__返回字节,而__unicode__返回字符。

这里到底如何定义“字符”和“字节”?例如,在C中,一个char是一个字节,所以char =一个字节就不会吗?或者,这是指(可能)unicode字符,可能是多个字节?例如,如果我们采取以下措施:

Ω (omega symbol)
03 A9 or u'\u03a9'

在python中,这将被视为一个字符(Ω)和两个字节,还是两个字符(03 A9)和两个字节?或者也许我混淆了charcharacter之间的区别?

python unicode byte cpython
1个回答
0
投票

在Python中,u'\u03a9'是由single Unicode字符Ω(U + 03A9)组成的字符串。该字符的内部表示形式是实现细节,因此询问所涉及的字节没有任何意义。

但是,两字节序列'\xce\xa9'可以解释为U + 03A9的UTF-8编码。

>>> u'\u03a9'.encode('utf-8')
'\xce\xa9'

>>> '\xce\xa9'.decode('utf-8')
u'\u03a9'
© www.soinside.com 2019 - 2024. All rights reserved.