Python проверит первую или вторую строку на наличие спецификации кодирования, подобной emacs / vim.
Точнее, первая или вторая строка должны соответствовать регулярному выражению "кодирования [: =] \ s * ([-. \ ш] +)».Первая группа этого выражения затем интерпретируется как имя кодировки.Если кодировка неизвестна Python, во время компиляции возникает ошибка.
Источник: PEP 263
(спецификация также заставит Python интерпретировать источниккак UTF-8.
Я бы порекомендовал использовать это значение вместо .decode('utf8')
# -*- encoding: utf-8 -*-
special_char_string = u"äöüáèô"
В любом случае special_char_string
будет содержать объект unicode
, больше неstr
. Как вы можете видеть, они оба семантически эквивалентны:
>>> u"äöüáèô" == "äöüáèô".decode('utf8')
True
И наоборот:
>>> u"äöüáèô".encode('utf8')
'\xc3\xa4\xc3\xb6\xc3\xbc\xc3\xa1\xc3\xa8\xc3\xb4'
>>> "äöüáèô"
'\xc3\xa4\xc3\xb6\xc3\xbc\xc3\xa1\xc3\xa8\xc3\xb4'
Однако есть техническое отличие: если вы используете U«что-то», оно будет инструктировать синтаксический анализатор, что есть литерал Unicode, это должно быть немного быстрее.