2012-04-11 122 views
0

我正在做這個PHP頁面,可以訪問Google帳戶並顯示所有電子郵件。我已經定義了一個header = UTF-8和meta,我使用了很多PHP函數將輸出轉換爲UTF,但我一直使用奇怪的圖標而不是ASCII特殊字符。如ç,éãPHP - ASCII特殊字符(不含MySQL)

header("Content-Type: text/html; charset: UTF-8"); 
    $message = imap_fetchbody($inbox,$email_number,2); 
    echo $message; 

應該是什麼輸出:

çççç 

我能得到什麼:

=E7=E7=E7=E7 

回答

1

使用imap_qprint(請參閱網頁上的替代解決方案的第一個評論)。

+0

我使用的第一個評論的解決方案的是做到了,非常感謝。 – JTFerreira 2012-04-11 10:00:20

0

這似乎是一個已知問題,關於imap_fetchbody PHP doc page的第一條評論。

使用imap_qprint或使用該評論者的解決方案:

<?php 
function ReplaceImap($txt) { 
    $carimap = array("=C3=A9", "=C3=A8", "=C3=AA", "=C3=AB", "=C3=A7", "=C3=A0", "=20", "=C3=80", "=C3=89"); 
    $carhtml = array("é", "è", "ê", "ë", "ç", "à", "&nbsp;", "À", "É"); 
    $txt = str_replace($carimap, $carhtml, $txt); 

    return $txt; 
} 

$mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", "login", "pass"); 
$no = 5; // Mail to show (mail number) 

$text = imap_fetchbody($mbox, $no, 1); 
$text = imap_utf8($text); 
$text = ReplaceImap($text); 
$text = nl2br($text); 

echo $text; 
?> 
+0

通過閱讀下面的評論,我用這個: $ message = preg_replace(「/ \ =([A-F] [A-F0-9])/」,「%$ 1」,$ message); \t \t $ message = urldecode($ message); \t \t $ message = utf8_encode($ message); – JTFerreira 2012-04-11 10:01:13