u'áíóús'
- это строка text . То, что вы видите в REPL, - это каноническое представление этого объекта:
>>> print u'áíóús'
áíóús
>>> print repr(u'áíóús')
u'\xe1\xed\xf3\xfas'
Такие вещи, как \xe1
, относятся к шестнадцатеричным ординалам каждого символа:
>>> [hex(ord(c)) for c in u'áíóús']
['0xe1', '0xed', '0xf3', '0xfa', '0x73']
Только последний символ был в диапазоне ascii, то есть порядковые номера в range(128)
, поэтому только последний символ "s" отчетливо виден в Python 2.x:
>>> chr(0x73)
's'
'áíóús'
- это строка байтов . То, что вы видите напечатанным, является кодировкой тех же текста символов, а эмулятор терминала принимает кодировку:
>>> 'áíóús'
'\xc3\xa1\xc3\xad\xc3\xb3\xc3\xbas'
>>> u'áíóús'.encode('utf-8')
'\xc3\xa1\xc3\xad\xc3\xb3\xc3\xbas'