关于python:UnicodeEncodeError仅在作为cron作业运行时

UnicodeEncodeError only when running as a cron job

本问题已经有最佳答案,请猛点这里访问。

我的程序在命令行中工作正常,但是当我以cron作业的形式运行它时,它会因错误而崩溃:

1
2
UnicodeEncodeError: 'ascii' codec can't encode character
u'
\xa7' in position 13: ordinal not in range(128)

它在声明上崩溃了

1
print title

为什么只有当应用程序作为cron作业运行时才会发生这种情况?怎么能解决这个问题?

我试过(没有帮助):

1
print unicode(title)

Python是2.7


不,你可以简单一点。在执行这个脚本之前,只需定义pythoniencoding。这样地:

1
2
3
4
5
PATH=<your path>
MAILTO=someone@somewhere
PYTHONIOENCODING=utf8

* * * * * /run/your/script


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

2.7上的默认编码是ascii。您需要为程序的输出提供编码。要使用的通用编码是"utf8"。

所以你应该这样做:

1
print title.encode('utf8')

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

1
2
3
4
import sys

sys.getdefaultencoding()
# -> 'ascii'