crontab 執行有中文編碼的程式時,出現錯誤 : UnicodeEncodeError: ‘ascii’ codec can’t encode character

最近寫了幾隻爬蟲,爬一些網站,然後存到 mysql 裡面,在使用 crontab 排成執行時,發生了錯誤。

在終端機或是 spyder 上執行都是沒問題的,但是 crontab 就是跑不出來,於是使用了我在另一篇文章提到的:用 crontab 安排作業排程後,如何知道裡面發生了什麼事?

顯示出這個錯誤:UnicodeEncodeError: ‘ascii’ codec can’t encode character

原因在於:
在終端機中直接執行Python程序時,Python會將輸出內容自動編碼為終端所使用的編碼,我使用的終端編碼是utf-8,所以不會出錯,輸出的內容也是正常的。但是在使用管道或者重定向時,編碼格式為​​ascii,Python會用ascii編碼格式去encode輸出的字符串,但是字符串的編碼使用的時utf-8,所以會出現UnicodeEncodeError的錯誤。

解決方法:
很簡單,在你的 crontab 第一行打上以下這些字,你的中文爬蟲就會啟動了。
LANG=zh_CN.UTF-8

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s