2013-03-01 2 views
8

При запуске моего python3 скрипта из Sublime Text 2, следующая встретилась ошибка:Sublime Text 2 кодирования ошибки Python3 построить

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) 

Кроме того, при выполнении такого же сценария с терминала, проблема не появляется ,

Система сборки установок для Sublime является следующее:

{ 
"cmd": ["python3", "-u", "$file"], 
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
"selector": "source.python", 
"encoding": "utf8", 
"path": "/Library/Frameworks/Python.framework/Versions/3.3/bin/" 
} 

Заранее спасибо!

ответ

28

После некоторого исследования и исследований, я понял, что проблема:

Отсутствует переменную ENV LANG в подпроцессе, пробежал Sublime Text 2. Я установил ее, просто добавив переменную LANG в настройках моей сборки, как так:

{ 
"cmd": ["python3", "-u", "$file"], 
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
"selector": "source.python", 
"env": {"LANG": "en_US.UTF-8"} 
} 
+0

Отлично! Решила мою проблему. – jostyposty

+1

Удивительный! Также работает для Sublime Text 3 – chris838

+1

Итак, я как раз собирался опубликовать это как вопрос снова, чтобы предоставить ответ, но, я думаю, я просто прокомментирую здесь. Я попробовал это, и это не сработало. Может быть, потому что я работаю на mac. Что трюк для меня не устанавливает переменную env LANG, а LC_CTYPE - «UTF-8». Я буквально обыскал 3 часа, оставил следы зубов на столе и поэтому, возможно, это помогает. – Ekkstein

1

Решения Martin работают отлично! В среде Windows/Python3.5 вместо «LANG» установите следующее:

"env": {"PYTHONIOENCODING": "utf8"}