python print z utf-8 i nohup
Mam jakiś kod Pythona, który drukuje wiadomości dziennika. Po uruchomieniu z linii poleceń, działa dobrze z utf-8. Komunikaty dziennika zawierające znaki specjalne są wyświetlane w porządku. Jednak, gdy uruchamiany jest w tle pod nohupem, zmienia się na znaki utf-8.
nohup python2.7 myProgram.py &
Błąd, który widzę, to zwykły błąd "spróbuj zakodować utf w ascii":
UnicodeEncodeError: kodek 'ascii' nie można zakodować znaku u '\u2013 ' w pozycja 71: ordinal not in range(128)
I Załóżmy, że to dlatego, że nohup sygnalizuje pythonowi, że nie ma normalnego terminala, więc domyślnie jest to ASCII. Czy jest jakiś sposób, aby powiedzieć nohupowi, aby działał z włączonym utf-8 lub skonfigurować to tak, aby znaki utf-8 nie powodowały awarii podczas pracy pod nohupem w tle?
1 answers
Użyj PYTHONIOENCODING :
export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py &
Na przykład, jeśli
MyProgram.py :
unicode_obj=u'\N{INFINITY}'
print(unicode_obj)
Then running
nohup python2.7 myProgram.py > /tmp/test &
Produkuje
/tmp / test :
UnicodeEncodeError: 'ascii' codec can't encode character u'\u221e' in position 0: ordinal not in range(128)
While
export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py > /tmp/test &
Produkuje
/tmp / test :
∞
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 20:35:39