在Python 2.7的文档中,有关Unicode的三条规则描述如下:
如果代码点<128,则由相应的字节值表示.
如果代码点在128和之间
0x7ff,则它变成128到255之间的两个字节值.代码点>
0x7ff被转换为三字节或四字节序列,其中序列的每个字节在128和255之间.
然后我做了一些测试:
>>>> unichr(40960)
u'\ua000'
>>> ord(u'\ua000')
40960
在我看来,40960是一个代码点> 0x7ff,所以它应该变成三个或四个字节的序列,其中序列的每个字节在128到255之间,但它只能变成两个字节的序列,并且u'\ a000'中的值'00'低于128,与上述规则不匹配.为什么?
更重要的是,我发现了一些更多的Unicode字符,比如u'\u1234'等.我发现它中的值("12"&&"34")也低于128,但根据首先提到的理论,它们不应该是低于128.我失去了任何其他理论?
谢谢你的所有答案.