2010-05-27 72 views
3

嗨,我正在檢索電子郵件,我的一些電子郵件有utf編碼文本。即使我的網頁被編碼成UTF-8但是 - 當我試着在一些地方出把UTF文字,我得到一些奇怪的字符,如:如何在我的utf-8編碼頁面上正確顯示utf編碼字符?

=?utf-8?B?Rlc6INqp24zYpyDYotm+INin2LMg2YXYs9qp2LHYp9uB2bkg2qnbjCDZhtmC?= 
=?utf-8?B?2YQg2qnYsdiz2qnYqtuSINuB24zaug==?= 

而在同一頁面的其他地區,它顯示的罰款。這是怎麼回事?

回答

6

這不是「有趣的人物」,那些人是合法的ASCII字符。只是字符串是用於傳輸的MIME編碼,所以你需要通過mb_decode_mimeheader

+0

如何檢查代碼字符串是否是mime編碼 – Ali 2010-05-27 07:34:29

+1

@Ali好問題。我相信如果字符串不是MIME編碼的,'mb_decode_mimeheader'只是按原樣傳遞它,所以它應該保存在任何字符串上。對於電子郵件**正文**,您應該解析頭文件以獲取它發送的傳輸編碼的線索。 – deceze 2010-05-27 07:38:59

+0

通過MIME解碼運行它保持正常字符串完好無損但是在我的情況下,原始編碼字符串現在顯示爲一系列問號。 – Ali 2010-05-27 08:25:44

1

您可能會看到未解碼的電子郵件標題:=?是起始分隔符,utf-8表示文本位於utf-8中,B表示base-64編碼。 ?=是結尾分隔符。因此,base64_decode()問號之間的部分,你會得到內容。