我正在执行此PHP页面,该页面可以访问Google帐户,而不是显示所有电子邮件。我已经定义了一个header = UTF-8和meta,我使用了很多PHP函数将输出转换为UTF,但我不断得到奇怪的图标而不是ASCII特殊字符。例如ç
,é
或ã
。
header("Content-Type: text/html; charset: UTF-8");
$message = imap_fetchbody($inbox,$email_number,2);
echo $message;
输出应该是什么:
çççç
我得到了什么:
=E7=E7=E7=E7
答案 0 :(得分:1)
使用imap_qprint
(有关替代解决方案,请参阅该页面的第一条评论)。
答案 1 :(得分: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("é", "è", "ê", "ë", "ç", "à", " ", "À", "É");
$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;
?>