【发布时间】:2012-08-07 09:11:07
【问题描述】:
正如许多人所希望的那样,这个编码问题正在驱使我精神。我真的很感激对此有所了解!
最终目标是能够从终端和 cron 以及带有 > stdout.txt 的 cron 运行相同的 script.py。不用说,我遇到了严重的编码问题。
因此,我的 script.py 从终端运行良好:python script.py
但是,当从终端运行时,它会引发错误:python script.py > stdout.txt
无论哪种方式,在 cron 中运行时都会引发相同的错误。
我有一个 python 脚本,以 root 身份输入 crontab -e。
这是我的 script.py 标头:
#!/usr/bin/python
# -*- coding: utf-8 -*-
这是我的 cron 条目:
* * * * * python /home/ubuntu/parrot/script.py > /home/ubuntu/parrot/stdout.txt
这是我的 stdout.txt(相关部分):
Unexpected error! (<type 'exceptions.UnicodeDecodeError'>, UnicodeDecodeError('ascii', 'blabla some weird text n\xc3\xa5r end', 54, 55, 'ordinal not in range(128)'))
这是我来自终端的环境(相关部分):
LANG=en_US.UTF-8
这是我的 cron 环境(相关部分):
LANG=en_US.UTF-8
这是 script.py 中引发错误的(第一)行:
print 'Posting @%s: %s' % (statusObj.user.screen_name.encode('ascii', 'replace'), statusObj.text.encode('utf-8', 'replace'))
编辑:
sys.getdefaultencoding() 返回ascii
非常感谢任何帮助!
【问题讨论】:
-
sys.getdefaultencoding()返回什么? -
为什么我有一种不好的感觉?..
-
如果这与stackoverflow.com/questions/2224130/… 中的问题不同,则很接近。