0

我正在做这个 PHP 页面,它可以访问一个谷歌帐户,而不是显示所有电子邮件。我也定义了一个 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
4

2 回答 2

1

使用imap_qprint(有关替代解决方案,请参阅该页面上的第一条评论)。

于 2012-04-11T09:50:32.833 回答
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;
?>
于 2012-04-11T09:54:03.853 回答