С чем может бы связано непринятие русского языка во Втором питоне на некоторых машинах?
Например на Fedora 22 после добавления в скрипт:
# -*- coding: utf -*-
проблема решалась, и русские буквы появлялись на экране.
На CentOS 7 такой финт не проходит, ругается:
SyntaxError: Non-ASCII character '\xd0' in file file.py on line 20,
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Ругается он на первую попавшуюся функцию:
def err():
print ("Укажите логин, Фамилия, Имя, Отчество")
sys.exit(0)
При этом пробовал строку:
# -*- coding: utf -*-
менять на:
# -*- coding: utf-8 -*-
не помогло.
А на другой машине с такой же CentOS7, русский отображается нормально.
Версия на CentOS7 - Python 2.7.5 (default, Jun 24 2015, 00:41:19)
Версия на fedora 22 - Python 2.7.10 (default, Jul 5 2015, 14:15:43)
Обновить версию на данный момент не представляется возможным, только через месяц, но это не важно.
В чем проблема и как ее можно решить?
Перейти на третью версию можно и, скорее всего, нужно, но сейчас именно по 2 вопрос.
Ответ
гипотезы и общие соображения:
согласно pep-у (ссылка есть и в самом вопросе) в поисках coding: кодировка просматриваются лишь первая и вторая строки файла.
возможно, в начале файла есть bom-ы или в первые строки «затесались» другие нечитабельные символы, что можно обнаружить, просматривая файл побайтово, например, так:
$ hexdump -C файл | less
возможно, в начале файла присутствуют переводы строк «не той системы» (для unix-like должны быть
), либо их смесь. как проверить — см. предыдущий пункт.
Комментариев нет:
Отправить комментарий