由於我有安裝 WordPress Database Backup 和 Spam Karma 2 這兩個 Plugins ,加上我的 Blog 標題是 Non-ASCII 的文字(我是用 UTF-8 編碼),所以常發生收信收到亂碼的窘境!
經過 Google 大神一番查詢和整理,終於找出了解決的方法。 XD
因為 RFC 822 規定標頭訊息(message headers)得用 ASCII 來編碼,所以當你使用 Non-ASCII 的文字做為你的內容時(像是 “螺絲起子” 是中文,用 UTF-8 編碼),就會發生亂碼的狀況。
畢竟 RFC 822 是早期訂定的東西,沒有考慮這麼的多,所以後續就產生了 RFC 2047 來解決這個惱人的問題。
在這邊也不打算要講道,我就跳過一些比較細節的部份,直接來講解決的方法(其實是怕多講多錯 XD)。
方法 1: 使用 “Base64 ”
1 |
$encode = "=?UTF-8?B?" . base64_encode($subject) . "?="; |
方法 2: 使用 “Quoted-Printable”
1 |
$encode = "=?UTF-8?Q?" . tr_replace("?","=3F",imap_8bit($subject)) . "?="; |
基本上是建議先用 phpinfo() 來看看哪個 extension 已經安裝,再來選擇要使用哪個方法,反正兩個都通。至於兩者的執行效率,因為沒經過測試,所以這邊就不討論啦!
原文取自: http://blog.snese.net/archives/20070392.html
全站熱搜