post by tommy @ 24 八月, 2006 16:09
前幾天發現原本在 crond 中所發送出來的信件, 在讀取時, 都不能正確的判斷出編碼來, 需要我手動去變更讀信程式的編碼, 才能正確的讀取裡頭的中文 (UTF-8). 我記得那幾天並沒有異動 crond, 好像只有更新 postfix 到 2.3.2 的版本, 可是看起來又不像是與 postfix 有關.
看了一下所產生的信件標頭, 以前都會正確的使用 charset=UTF-8, 不過這幾天的都是顯示為 charset=ANSI_X3.4-1968, 所以讀信的軟體就沒辦法知道裡頭的內容應該是 UTF-8 才對.
最後, 在 /etc/crontab 中加上 CONTENT_TRANSFER_ENCODING 來指定 crond 所產生的 email 要使用的編碼如下:
CONTENT_TRANSFER_ENCODING="UTF-8"
這樣子重跑 crond 之後, 所產生的信件又恢復成 UTF-8 編碼了.
2006/08/25: 今天重開機後發現, 原本加在 /etc/crontab 中的設定無效, 送出來的信件中, charset 並不是 UTF-8, 必須我再執行 /etc/init.d/cron restart 重跑後才有用. 試著把這個設定加到 /etc/init.d/cron 之中, 一樣無效. 最後是加上 LANG 的設定才有用.
export CONTENT_TRANSFER_ENCODING=UTF-8
export LANG=zh_TW.UTF-8
而且要 export 才有作用. (沒試過只加 LANG 有沒有作用, 想試的人再去試吧.)