печать UTF-8 в Python 3 с использованием Sublime Text 3
у меня есть этот код Python3, чтобы попытаться прочитать и распечатать из файла в кодировке utf-8:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line)
когда я строю с помощью Sublime Text 3, я получаю следующую ошибку:
UnicodeEncodeError: 'ascii' codec can't encode character 'u2019' in position 18: ordinal not in range(128)
однако он работает, когда я просто выполняю свой код в терминале с python3.
моя конфигурация сборки
{
"cmd": ["/usr/local/bin/python3", "$file"]
, "selector": "source.python"
, "file_regex": "file "(...*?)", line ([0-9]+)"
}
если я изменю его на:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line.encode('utf-8'))
затем он печатает строку байта в кодировке utf-8 (я думаю, что это то, что событие.)
b'Hellon'
b'xc2xabxe2x80xa2n'
b'Goodbye'
но я также не знаю, как перейти от этого к печати символов Юникода на экране...
кроме того, если я попытаюсь изменить эту переменную env согласно программа python не выполняется в sublime text 3, но успех в bash это все еще не исправить.
3 ответов
ответ был на самом деле в вопросе, связанном в вашем вопросе -PYTHONIOENCODING
необходимо указать "utf-8"
. Однако, поскольку OS X глупо и не подбирает переменные среды, установленные в терминале или через .bashrc
или аналогичные файлы, это не будет работать так, как указано в ответе на другой вопрос. Вместо этого вам нужно передать эту переменную среды в Sublime.
"env": {"PYTHONIOENCODING": "utf8"},
я спас построить систему, нажмите ⌘B, и программа работала нормально.
кстати, если вы хотите прочитать exec.py
или Packages/Python/Python.sublime-build
, или любой другой файл упакован в .sublime-package
архив, установить PackageResourceViewer
через Управление пакетом. Используйте опцию " Открыть ресурс "в палитре команд для выбора отдельных файлов или" извлечь пакет "(оба предшествуют" PackageResourceViewer:", или prv
использование нечеткого поиска) для извлечения весь пакет для вашего Packages
папка, доступ к которой осуществляется путем выбора Sublime Text → Preferences → Browse Packages…
(всего Preferences → Browse Packages…
на других операционных системах). Он расположен на вашем жестком диске в следующем месте:
- Linux:
~/.config/sublime-text-3/Packages
- OS X:
~/Library/Application Support/Sublime Text 3/Packages
- Обычная Установка Windows:
C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
- Установка Windows Portable:
InstallationFolder\Sublime Text 3\Data\Packages
как только файлы будут сохранены в вашем (если вы просто просмотрите их с помощью опции "открыть ресурс" и закройте без изменения или сохранения, их не будет), они переопределят файл с идентичным именем, содержащийся в .sublime-package
архиве. Так, например, если вы хотите изменить значение по умолчанию на Python
пакета, ваши изменения будут сохранены как Packages/Python/Python.sublime-build
, и когда вы выберите Python
build system из меню, он будет использовать только вашу версию.
он работает, спасибо, полный скрипт системы сборки для Sublime Text 3
Инструмент - > Система Сборки - > Новая Система Сборки
{
"shell_cmd": "python \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf8"}
}
Примечание Если вы используете venv с S3, вам нужно будет обновить Python + Virtualenv.возвышенное-создать файл ресурсов.
{
"target": "virtualenv_exec",
"shell_cmd": "python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}