PHP - ASCII特殊字符(不含MySQL)

时间:2012-04-11 09:46:48

标签: php character-encoding

我正在执行此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

2 个答案:

答案 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("é", "è", "ê", "ë", "ç", "à", "&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;
?>