Вообще говоря, подобные проблемы вызваны некоторой взаимосвязью между тем, как Python определяет за кулисами кодировку, которую он должен использовать при генерации вывода, и тем, как Sublime выполняет интерпретатор Python.
В частности, где это можетправильно определить правильную кодировку при запуске из терминала, интерпретатор Python может запутаться и выбрать неправильную кодировку, когда Sublime вызывает ее.
Переменная окружения PYTHONIOENCODING
может использоваться для указания интерпретатору использовать определенныйкодирование в пользу того, что в противном случае могло бы быть автоматически выбрано.
Файл sublime-build
позволяет вам задавать пользовательские переменные среды, которые будут применяться во время сборки, с помощью клавиши env
, поэтому вы можете сделать что-то вроде следующего:
{
"shell_cmd": "python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
"variants":
[
{
"name": "Syntax Check",
"shell_cmd": "python -m py_compile \"${file}\"",
}
]
}