Python中的Unicode

Sea*_*ene -2 python unicode

在Python 2.7的文档中,有关Unicode的三条规则描述如下:

如果代码点<128,则由相应的字节值表示.

如果代码点在128和之间0x7ff,则它变成128到255之间的两个字节值.

代码点> 0x7ff被转换为三字节或四字节序列,其中序列的每个字节在128和255之间.

然后我做了一些测试:

>>>> unichr(40960)

u'\ua000'

>>> ord(u'\ua000')

40960
Run Code Online (Sandbox Code Playgroud)

在我看来,40960是一个代码点> 0x7ff,所以它应该变成三个或四个字节的序列,其中序列的每个字节在128到255之间,但它只能变成两个字节的序列,并且u'\ a000'中的值'00'低于128,与上述规则不匹配.为什么?

更重要的是,我发现了一些更多的Unicode字符,比如u'\u1234'等.我发现它中的值("12"&&"34")也低于128,但根据首先提到的理论,它们不应该是低于128.我失去了任何其他理论?

谢谢你的所有答案.

Kar*_*tel 5

在python2.7的文档中,关于unicodes的三条规则描述如下:

这是UTF-8编码的描述.

然后我做了一些测试:

\ua000是表示Unicode字符的转义序列.它a000是数字代码点值的十六进制表示.它 UTF-8编码无关.

当您使用UTF-8编码显式编码unicode字符串时,您将获得UTF-8编码.