оператор печати 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:
∞