2016-03-08 28 views
0

面对的问题,当我试图通过IMAP收到一封电子邮件的正文在PHP中,变量$body的内容是如何在php中使用德语区域设置获得imap正文文本?

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); 
} 

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

回答

2

您尝试显示的邮件与您网站的标题不是相同的编码。这就是为什么您的浏览器无法正确显示特殊字符的原因,例如这种情况下的变音符号。

例如,你可以将它们转换为UTF-8 imap_utf8

$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

+1

也与此有关:http://stackoverflow.com/questions/279170/utf-8-all-the-这样,通过 – Sammitch