Кодировка, используемая для литералов u “”

Рассмотрим следующий пример:

>>> s = u"баба"
>>> s
u'\xe1\xe0\xe1\xe0'
>>> print s
áàáà

Я использую кодировку cp1251 в режиме ожидания, но она похоже, что интерпретатор на самом деле использует latin1 для создания строки Unicode:

>>> print s.encode('latin1')
баба

Почему так? Есть ли спецификация для такого поведения?

CPython, 2.7.


Править

На самом деле я искал код

>>> u'\xe1\xe0\xe1\xe0' == u'\u00e1\u00e0\u00e1\u00e0'
True

Похоже, что при кодировании юникода с помощью кодека latin1 все точки юникода меньше 256 просто оставляются как есть, что приводит к получению байтов, которые я набрал раньше.

6
задан Roman Bodnarchuk 29 February 2012 в 21:26
поделиться