Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Не везде отображаются русские символы

#python #кодировка #utf_8 #python_2x


С чем может бы связано непринятие русского языка во Втором питоне на некоторых машинах?

Например на 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 вопрос.
    


Ответы

Ответ 1



гипотезы и общие соображения: согласно pep-у (ссылка есть и в самом вопросе) в поисках coding: кодировка просматриваются лишь первая и вторая строки файла. возможно, в начале файла есть bom-ы или в первые строки «затесались» другие нечитабельные символы, что можно обнаружить, просматривая файл побайтово, например, так: $ hexdump -C файл | less возможно, в начале файла присутствуют переводы строк «не той системы» (для unix-like должны быть \n), либо их смесь. как проверить — см. предыдущий пункт.

Комментариев нет:

Отправить комментарий