Указание кодировки литерала 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')

Весь смысл строки кодека исходного кода заключается в поддержке использования произвольного кодека в вашем редакторе. На самом деле исходный код никогда не должен использовать смешанные кодировки.

Другие вопросы по тегам