最近某個腳本的執行經常導致編碼問題。
腳本從遠端mysql數據庫獲取影片中文名,然後再導入本機的mysql中。發現由crontab自動執行的時候獲取的影片名稱都是亂碼,但手動執行腳本卻正常輸出。幾天都是這個問題。今天突然想起以前也有類似問題,在終端執行“echo $LANG",然後在腳本中加”export LANG=xx(之前的輸出結果)“,問題解決。
具體原因不知,個人猜測本地LANG是人爲設定,系統LANG應該是不同的一個值。而crond在執行是應該使用的是系統值,而不是當前用戶設定的值。
同樣的原因,之前發現shell腳本在執行”sort“的時候輸出結果也受LANG的影響。以後寫shell腳本的時候必須注意這個問題了。