我有一个程序可以扫描我的MP3并创建一个信息数据库。源位于github。在
当我从命令行运行update.sh脚本时,它可以正常工作。当我将它作为cron作业运行时,我会看到以下错误(具体代码会有所不同):
'utf-8' codec can't encode character '\udce2' in position 37: surrogates not allowed
看一下日志,我看到为曲目标题打印的数据略有不同。从命令行调用时,我看到:
DEBUG:root:delegating artist Wendy Carlos, track "Jesu, Joy of Man’s Desiring", BWV 147 No. 10 to finder
但当从cron运行时,我看到:
^{pr2}$在这两种情况下,“track”后面的文本都是来自stagger库的ID3标记(标签标题). 在
现在,stagger是一个纯Python库,它似乎对相同的输入给出了不同的结果。所以,虽然我可以说这是一个bug,让他们自己去解决,但我想在这个环境中,命令行和cron之间有些不同。但是什么?在这两种情况下,python都是从virtualenv调用的(参见上面链接的脚本)。在
所以我的问题是-什么样的事情会导致这种情况?不可能是魔法。必须有一个合理的解释。。。在
[同样,在本例中,它是根据kid3的v2.4id3]
[而且,公平地说,还不清楚是Stagger导致了错误。它可能返回相同的值,但python在这两种情况下处理方式不同。]
这可能是由于
LANG
环境变量的值不同造成的。有关详细信息,请参阅this文章。在相关问题 更多 >
编程相关推荐