оператор печати python с utf-8 и nohup

У меня есть код python, который печатает сообщения журнала. При запуске в командной строке он отлично справляется с utf-8. Сообщения журнала, содержащие специальные символы, распечатываются нормально. Однако при запуске в фоновом режиме под nohup он блюет на utf-8 символов.

nohup python2.7 myProgram.py &

ошибка, которую я вижу, - это обычная ошибка" попробуйте кодировать utf в ascii":

UnicodeEncodeError: кодек ascii не удается кодировать символ u 'u2013 ' в позиция 71: порядковый номер не в диапазон(128)

Я предполагаю, что это потому, что nohup сигнализирует python, что у него нет нормального терминала, поэтому по умолчанию используется ascii. Есть ли способ сказать nohup для запуска с включенным utf-8 или настроить это так, чтобы символы utf-8 не вызывали сбоя при работе под nohup в фоновом режиме?

1 ответов


использовать PYTHONIOENCODING:

export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py &

, если

myProgram.py:

unicode_obj=u'\N{INFINITY}'
print(unicode_obj)    
под управлением
nohup python2.7 myProgram.py > /tmp/test &

производит

/ tmp / test:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u221e' in position 0: ordinal not in range(128)

пока

export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py > /tmp/test &

производит

/ tmp / test: