2013-06-28 5 views
3

Я сделал небольшое приложение, которое печатает специальные символы Юникода (то есть надстрочный индекс, индекс ...). Когда он выполняется локально, проблем нет, но когда он запускается в сеансе ssh, я всегда получаю UnicodeEncodeError. В частности: UnicodeEncodeError 'ascii' can't encode characters in position 0-1: ordinal not in range(128) Я пробовал разные клиенты ssh, компьютеры и дважды проверял кодировку сеансов, но результат тот же. Это действительно странно. Почему это происходит? Это действительно связано с ssh?UnicodeEncodeError при использовании python из ssh

+0

Скорее всего, потому что Python не может определить терминальное кодирование и возвращается к ASCII. См. Http://docs.python.org/3/howto/unicode.html python Unicode Howto. –

+1

Есть ли 'python your_script.py | cat' работает локально? Попробуйте 'PYTHONIOENCODING = utf-8 python your_script.py | cat'. – jfs

+0

@ J.F.Sebastian Да, работает. Даже без этой переменной окружения. – Rnhmjoj

ответ

1

Проблема может быть не в коде Python, проверьте ваш ssh ENV. LANG должен быть en_US.UTF-8 (содержащий UTF-8), а не ASCII

+1

'LANG' установлен на utf-8. Установка 'PYTHONIOENCODING = utf-8' решит проблему, но странно, что' sys.getdefaultencoding() 'уже возвращает utf-8. Так что это ничего не должно менять. – Rnhmjoj

Смежные вопросы