Ошибка кодировки файла Python 2.7 - PullRequest
0 голосов
/ 25 сентября 2018

Когда я использую Python 2.7 и пытаюсь объявить кодировку исходного кода Python с помощью:

#!/usr/bin/python
# -*- coding: utf-8 -*-

Когда я проверяю кодировку файла с помощью:

check_encoding = sys.getdefaultencoding()
logger.warning("check_encoding ")

Я получаю:

ascii

Когда я использую Python 3, у меня нет проблем с этим, объявляя кодировку исходного кода следующим образом:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

Когда я проверяю кодировку файла с помощью:

check_encoding = sys.getdefaultencoding()
logger.warning("check_encoding ")

Я получаю:

utf-8

Я понятия не имею, что не так с версией Python 2.7 и чем это может быть вызвано.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы путаете кодировку исходного кода (объявленную с # -*- coding: utf-8 -*), и кодировка времени выполнения по умолчанию, используемая для неявных преобразований между строками Unicode и байтами.Они абсолютно не связаны как в Python 2, так и в Python 3.

В этом смысле # -*- coding: utf-8 -* ведет себя точно так же в Python 2 и Python 3: он объявляет кодировку литералов Юникода в текущем исходном файле.

Но кодировка системы по умолчанию другая.Это обычно ascii в Python 2 и может зависеть от среды на Python 3 с UTF-8 по умолчанию.Таким образом, вы получаете то же значение в вашем коде только случайно ...

...