Python UnicodeEncodeError仅在管道插入文件时出现,并且仅在某些PC上出现

Python UnicodeEncodeError仅在管道插入文件时出现,并且仅在某些PC上出现,python,unicode,utf-8,Python,Unicode,Utf 8,很多人都有这个问题,但提出的解决方案对我没有帮助 在我的ubuntu机器上,脚本运行时没有错误。但在我的raspi身上,我总是会犯这样的错误: UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 21: ordinal not in range(128) 错误提示为德语字符(umlaut,ö),应使用print(a_名称) 让我困惑的是:调用python3myscript.py时,我没有在ras

很多人都有这个问题,但提出的解决方案对我没有帮助

在我的ubuntu机器上,脚本运行时没有错误。但在我的raspi身上,我总是会犯这样的错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 21: ordinal not in range(128)
错误提示为德语字符(umlaut,ö),应使用
print(a_名称)

让我困惑的是:调用python3myscript.py时,我没有在raspi上得到任何错误。但是通过调用python3myscript.py,我得到了错误。与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 pc上(在那里我没有收到任何错误):en_US.UTF-8

在raspi上:de_de.UTF-8


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

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

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

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

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

在正常情况下,Python使用区域设置来确定应用于标准输出的编码

当Python没有交互式会话时,即当输入或输出通过管道传输或重定向时,Python在stdout和stdin上默认为“ASCII”编码

要覆盖此行为,请使用
pythonionecoding
环境变量设置适当的输入/输出编码。例如

PYTHONIOENCODING=utf-8 echo "test €3.20" | myscript.py > output.txt

在正常情况下,Python使用区域设置来确定应用于标准输出的编码

当Python没有交互式会话时,即当输入或输出通过管道传输或重定向时,Python在stdout和stdin上默认为“ASCII”编码

要覆盖此行为,请使用
pythonionecoding
环境变量设置适当的输入/输出编码。例如

PYTHONIOENCODING=utf-8 echo "test €3.20" | myscript.py > output.txt

这比我想象的要容易。谢谢,这比我想象的要容易。谢谢。但是在我的电脑上重定向输出时,我没有遇到任何问题,尽管没有设置PythonionEncoding。在您的Rpi上,运行
locale
,查看是否有任何错误。您可能希望通过并排比较两台机器的行为来更新您的问题。目前还不清楚什么是有效的,什么是无效的。但是当在我的电脑上重定向输出时,我没有遇到任何问题,尽管没有设置PythonionEncoding。在你的Rpi上,运行
locale
,看看是否有任何错误。你可能想通过并排比较两台机器的行为来更新你的问题。目前还不清楚什么有效,什么无效。