由於我有安裝 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


創作者介紹

經驗交流分享與備忘

Frank 發表在 痞客邦 PIXNET 留言(0) 人氣()