使用 utf-8 和 nohup 的 python 打印语句
我有一些打印日志消息的 python 代码。在命令行中运行时,使用 utf-8 效果很好。包含特殊字符的日志消息可以正常打印。但是,当在 nohup 下在后台运行时,它会在 utf-8 字符上出现错误。
nohup python2.7 myProgram.py &
我看到的错误是常见的“尝试以 ascii 编码 utf”错误:
UnicodeEncodeError:“ascii”编解码器 无法对字符 u'\u2013' 进行编码 位置 71:序数不在范围内(128)
我认为这是因为 nohup 向 python 发出信号,表明它没有正常的终端,因此它默认为 ascii。有没有办法告诉 nohup 在启用 utf-8 的情况下运行,或者进行设置,以便 utf-8 字符在后台 nohup 下运行时不会导致崩溃?
I have a some python code that prints log messages. When run at the command line, it does fine with utf-8. Log messages that contain special characters print out fine. However, when run in the background under nohup, it barfs on utf-8 characters.
nohup python2.7 myProgram.py &
The error I see is the usual "try to encode utf in ascii" error:
UnicodeEncodeError: 'ascii' codec
can't encode character u'\u2013' in
position 71: ordinal not in range(128)
I assume this is because nohup signals to python that it doesn't have a normal terminal, so it defaults to ascii. Is there any way to either tell nohup to run with utf-8 enabled or to set this up so that utf-8 characters won't cause a crash when running under nohup in the background?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 PYTHONIOENCODING:
例如,如果
myProgram.py:
然后运行
产生
/tmp/test:
而
产生
/tmp/test:
Use PYTHONIOENCODING:
For example, if
myProgram.py:
then running
produces
/tmp/test:
while
produces
/tmp/test: