【发布时间】:2019-09-12 18:27:44
【问题描述】:
我有一个在screen 中完美运行的python 程序。现在我想从使用屏幕运行脚本切换到systemd 服务。该程序是一个电报机器人,它经常发送包含像 Schweineschnitzel "Toscana" mit würziger Kräuterpanade 这样的变音符号的文本,但当它作为 shell 脚本执行时,即使在将文本打印到终端时也能完美运行。
我没有对代码本身进行任何更改,我只是将文件作为ExecStart 放在一个.service-File 中,并希望程序能够正常工作。
但是,当我尝试打印我的文本时,我从systemctl status 得到这个输出作为错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 132: ordinal not in range
在 systemd-Service 中是否有任何不同的环境需要我必须配置,以便由于某种原因在一种情况下可以正确处理非 ascii 符号,而在另一种情况下则不能?
【问题讨论】:
-
尝试将默认编码设置为 UTF-8 而不是 ASCII
-
你的程序需要在一个有 UTf-8
locale的进程中运行,或者你应该设置 PYTHIOENCODING 环境变量 tu UTF8。 -
叫
PYTHONIOENCODING,证明:docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODING