Указание кодировки литерала Unicode для каждого литерала
Согласно документации, можно определить кодировку литералов, используемых в источнике Python, следующим образом:
# -*- coding: latin-1 -*-
u = u'abcdé' # This is a unicode string encoded in latin-1
Есть ли поддержка синтаксиса для определения кодировки в буквальном смысле? Я ищу что-то вроде:
latin1 = u('latin-1')'abcdé' # This is a unicode string encoded in latin-1
utf8 = u('utf-8')'xxxxx' # This is a unicode string encoded in utf-8
Я знаю, что синтаксис не имеет смысла, но я ищу что-то подобное. Что я могу сделать? Или, может быть, невозможно иметь один исходный файл со строками Unicode в разных кодировках?
1 ответ
Вы не можете пометить unicode
в буквальном смысле, используя кодировку, отличную от остальной части исходного файла, нет.
Вместо этого вы бы вручную декодировали литерал из строки байтов:
latin1 = 'abcdé'.decode('latin1') # provided `é` is stored in the source as a E9 byte.
или используя escape-последовательности:
latin1 = 'abcd\xe9'.decode('latin1')
Весь смысл строки кодека исходного кода заключается в поддержке использования произвольного кодека в вашем редакторе. На самом деле исходный код никогда не должен использовать смешанные кодировки.