如何在 php 中获取带有德语语言环境的 imap 正文文本?

How to get imap body text with german locale in php?

当我尝试在php中通过imap获取邮件正文时,变量$body的内容是

Jääätzt Kööönmän umläute mit ÄnhÄÄÄng

而不是

Jääätzt Kööönmän umläute mit ÄnhÄÄÄng.

我不明白问题出在哪里,所有其他字符如 ?,!,$ 都工作正常,只有像 ä,ö 这样的德语字符会出现这些问题。

我使用的 php 中的代码块是

$body = imap_fetchbody($mbox, $overview->msgno, 1.2);
    if (!strlen($body) > 0) {
        $body = imap_fetchbody($mbox, $overview->msgno, 1);
}

你有什么想法吗?我真的很绝望。

您尝试显示的邮件与您网站的 headers 的编码不同。这就是您的浏览器无法正确显示特殊字符的原因,例如本例中的变音符号。

例如,您可以使用 imap_utf8

将它们转换为 utf-8
$body = imap_fetchbody($mbox, $overview->msgno, 1.2);
if (!strlen($body) > 0) {
    $body = imap_fetchbody($mbox, $overview->msgno, 1);
}
$body = imap_utf8($body);

http://php.net/manual/de/function.imap-utf8.php