В документации Python 2.7 три правила о Unicode описываются следующим образом:
Если кодовая точка равна < 128, ее обозначают соответствующее значение байта.
Если кодовая точка находится между 128 и
0x7ff
, она превращается в два байтовых значения между 128 и 255.Кодовые точки >
0x7ff
преобразуются в трех- или четырехбайтовые последовательности, где каждый байт последовательности находится между 128 и 255.
Затем я сделал несколько тестов об этом:
>>>> unichr(40960)
u'\ua000'
>>> ord(u'\ua000')
40960
На мой взгляд, 40960 - это кодовая точкa > 0x7ff
, поэтому она должна быть превращена в трех- или четырехбайтовые последовательности, где каждый байт последовательности находится между 128 и 255, но он только превращается в два -bytes, а значение '00' в u '\ a000' меньше 128, не соответствующее указанным выше правилам. Почему?
Что еще, я нашел еще несколько символов Юникода, например u'\u1234'
и т.д. Я обнаружил, что значение ( "12" & "34" ) в нем также меньше 128, но в соответствии с прежде всего, они не должны быть ниже 128. Любые другие теории, которые я потерял?
Спасибо за все ответы.