UnicodeEncodeError仅在通过管道传输到文件时,并且仅在某些PC上时

Sad*_*dik 1 python unicode utf-8

许多人遇到了这个问题,但是提出的解决方案并没有帮助我。

在我的ubuntu机器上,脚本运行无错误。但是在我的raspi上,不断出现此错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 21: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

错误提示德语字符(umlaut,ö),应使用 print(a_name)

令我感到困惑的是:打电话时,python3 myscript.py我在raspi上没有任何错误。但是通过电话python3 myscript.py> output我得到了错误。与nohup python3 myscript.pycrontab 相同或从crontab运行时:

@reboot LANG=de_DE.UTF-8 /home/pi/launcher.sh > /home/pi/bot/logs/cronlog 2>&1
Run Code Online (Sandbox Code Playgroud)

其中launcher.sh使用以下代码:

python3 myscript.py > pythonlog 2>&1
Run Code Online (Sandbox Code Playgroud)

我检查了$ LANG

在我的ubuntu电脑上(没有任何错误):en_US.UTF-8

在raspi上:de_DE.UTF-8

为什么我会收到此错误消息,如何消除它?

moz*_*azg 5

您是否尝试过设置环境变量PYTHONIOENCODING

export PYTHONIOENCODING=UTF-8
python3 myscript.py > pythonlog 2>&1
Run Code Online (Sandbox Code Playgroud)