Ern*_*nst 15 python utf-8 nohup
我有一些打印日志消息的python代码.在命令行运行时,使用utf-8就可以了.包含特殊字符的日志消息打印正常.但是,当在nohup下在后台运行时,它会在utf-8字符上进行barfs.
nohup python2.7 myProgram.py &
Run Code Online (Sandbox Code Playgroud)
我看到的错误是通常的"尝试在ascii中编码utf"错误:
UnicodeEncodeError:'ascii'编解码器无法对位置71中的字符u'\ u2013'进行编码:序数不在范围内(128)
我认为这是因为nohup向python发出信号,表示它没有正常的终端,因此默认为ascii.是否有任何方法可以告诉nohup在启用utf-8的情况下运行还是设置它以便utf-8字符在后台运行nohup时不会导致崩溃?
unu*_*tbu 20
export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py &
Run Code Online (Sandbox Code Playgroud)
例如,如果
myProgram.py:
unicode_obj=u'\N{INFINITY}'
print(unicode_obj)
Run Code Online (Sandbox Code Playgroud)
然后跑
nohup python2.7 myProgram.py > /tmp/test &
Run Code Online (Sandbox Code Playgroud)
产生
/ tmp/test:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u221e' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
而
export PYTHONIOENCODING=utf-8
nohup python2.7 myProgram.py > /tmp/test &
Run Code Online (Sandbox Code Playgroud)
产生
/ tmp/test:
?
Run Code Online (Sandbox Code Playgroud)