UnicodeEncodeError仅在作为cron作业运行时

xra*_*alf 31 python unicode cron

我的程序在命令行中正常工作,但是当我将它作为一个cron作业运行时,它会在错误上崩溃:

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

它在声明中崩溃了

print title
Run Code Online (Sandbox Code Playgroud)

为什么只有当应用程序作为cron作业运行时才会发生这种情况?怎么能修好?

我试过了(没有帮助):

print unicode(title)
Run Code Online (Sandbox Code Playgroud)

Python是2.7

kwo*_*orr 94

不,你可以更简单.在执行此脚本之前,只需定义PYTHONIOENCODING即可.像这样:

PATH=<your path>
MAILTO=someone@somewhere
PYTHONIOENCODING=utf8

* * * * * /run/your/script
Run Code Online (Sandbox Code Playgroud)

  • 如果我可以给你+2.这狗屎一直乱着我的头! (14认同)

ber*_*nie 4

旁白:这是一个常见问题;因此,这可能是一个重复的问题。

2.7 上的默认编码是ascii.
您需要为程序的输出提供编码。
常用的编码是“utf8”。

所以你会这样做:

print title.encode('utf8')
Run Code Online (Sandbox Code Playgroud)

这是检查默认编码的一种方法:

import sys

sys.getdefaultencoding()
# -> 'ascii'
Run Code Online (Sandbox Code Playgroud)