Skip to main content
 首页 » 编程设计

python之UnicodeEncodeError 仅在通过管道传输到文件时且仅在某些 PC 上出现

2025年05月04日11linjiqin

很多人遇到过这个问题,但所提供的解决方案对我没有帮助。

在我的 ubuntu 机器上,脚本运行没有错误。但是在我的 raspi 上不断出现这个错误:

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

错误提示应该使用 print(a_name)

打印德语字符(变音符号、ö)

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

@reboot LANG=de_DE.UTF-8 /home/pi/launcher.sh > /home/pi/bot/logs/cronlog 2>&1 

launcher.sh 使用以下代码:

python3 myscript.py > pythonlog 2>&1 

我检查了$LANG

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

在 raspi 上:de_DE.UTF-8

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

请您参考如下方法:

你试过设置环境变量PYTHONIOENCODING吗?

export PYTHONIOENCODING=UTF-8 
python3 myscript.py > pythonlog 2>&1