2

В системном интерпретаторе Linux отображение кириллических символов для Python корректное, а через Sublime Text 3 не могу добиться нормального отображения. В чём проблема?

В настройках SublimeREPL стоит строчка

`"default_extend_env": {"PYTHONPATH": "/usr/bin/python3"},`

Пробовал и /usr/bin/python и долго игрался с другими настройками, эффекта ноль. На Windows всё работало нормально, но на Linux проблемы.

Если в Sublime Text 3 запустить следующий код,

print(1, "Привет", 2)

То при выполнении выскочит вполне понятная ошибка:

File "untitled.py", line 1 SyntaxError: Non-ASCII character 
'\xd0' in file untitled.py on line 1, but no encoding declared;
see http://python.org/dev/peps/pep-0263/ for details

Если выполнить такой код,

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

print(1, "Привет", 2)

То отрабатывает без ошибок, но на выходе это:

(1, '\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82', 2)

***Repl Closed***

Замена в коде #!/usr/bin/python на #!/usr/bin/python3 Также ничего не изменило

MIKS
  • 369
  • Дайте попробую угадать: в системе Python 3, а в sublime Python 2? – andreymal Oct 05 '16 at 23:35
  • @andreymal, в настройках sublimeREPL стоит строчка "default_extend_env": {"PYTHONPATH": "/usr/bin/python3"}, все равно не помогает. на винде все работало нормально а на линуксе проблемы – MIKS Oct 06 '16 at 00:01
  • 3
    Начните с минимального примера кода, который демонстрирует проблему, например: print("hello \U0001F602 мир!") (это весь код). [mcve] Приведите результаты в терминале и из вашего редактора. По возможности в виде текста, а не картинки (если не знаете как в вашем окружении текст скопировать—спросите). Кстати, PYTHONPATH это переменная окружения, используемая для sys.path—она должна быть пуста обычно и пути к исполняемому файлу python3 там делать нечего, даже если она не пустая. – jfs Oct 06 '16 at 03:01
  • @Михаил PYTHONPATH - путь к каталогу с модулями питона, а не к самому питону, а питон всё ещё может оказаться вторым – andreymal Oct 06 '16 at 07:27
  • В дополнение к комментарию jfs рекомендую ещё сделать print(1, "Привет", 2) и все результаты аналогично сюда (через редактирование вопроса) – andreymal Oct 06 '16 at 07:28
  • 1
    Отредактировал вопрос – MIKS Oct 06 '16 at 13:07
  • как вам @andreymal сказал, у вас sublime использует Python 2, а код у вас написан вероятно для Python 3. Если не знаете как запустить Питон-скрипт в sublimе, используя Python 3, то задайте отдельный вопрос (это может быть полезно, не только для вас, не только в контексте вывода текста). – jfs Oct 06 '16 at 16:58
  • @Михаил, (у меня на Windows 10 проблема не воспроизводится). Вместо попыток отладки SublimeREPL порекомендовал бы использовать альтернативы SublimeREPL и дефолтной Build System — Terminality или Console Exec. Аргументы расписал в ответе по ссылке. Разработка SublimeREPL давно прекращена, помощь от самих разработчиков никак не получишь. Вместе с тем баги с кодировками никуда не делись, тоже не могу их побороть. Спасибо. – Саша Черных Nov 17 '16 at 08:31
  • @jfs, у вас sublime использует Python 2, — автор вопроса упомянул, что у него Sublime Text 3. Если он не пользуется устаревшими версиями, то в Sublime Text, начиная с Build 3124, используется Python 3.3. Спасибо. – Саша Черных Nov 17 '16 at 08:38
  • @СашаЧерных посмотрите на вывод в вопросе: нет ни тени сомнения что это Питон 2 вывод. Подумайте как выглядит print(1,2) в Питоне 2 и 3. – jfs Nov 17 '16 at 08:50

0 Answers0