Преобразование строк из/в Unicode

В дополнение к посту о funny characters.

Преобразование utf-8 в cp866 (в ASCII кодировку)

    >>> u'ы'.encode('cp866')
    '\xeb'

Преобразование cp866 в utf-8

    >>> 'ы'.decode('cp866')
    u'\u044b'

decode - декодирует последовательность байтов в юникод, encode - кодирует юникод в последовательность байтов. Последовательность байтов всегда должна интерпретироваться с учетом кодировки - в примере получаются последовательности байтов в кодировке cp866. :)

PS. А в Python 3 концепция работы с юникодом круче, как обещает документация :)

Cтрока (str) - всегда UTF-8, то есть действительно строка, в универсальной кодировке. А все остальное - последовательности байт bytes, про которые нужно знать, в какой они кодировке, если нужно их перевести в строку.

Notes

  1. rudi-src posted this