使用 utf-8 和 nohup 的 python 打印语句

发布于 2024-10-31 15:32:23 字数 452 浏览 2 评论 0原文

我有一些打印日志消息的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北斗星光 2024-11-07 15:32:24

使用 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

Use PYTHONIOENCODING:

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

For example, if

myProgram.py:

unicode_obj=u'\N{INFINITY}'
print(unicode_obj)    

then running

nohup python2.7 myProgram.py > /tmp/test &

produces

/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 &

produces

/tmp/test:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文