2011-06-28 62 views
2

我尝试使用此代码,以获取电子邮件的正文日本:阅读从IMAP电子邮件的正文日文字符

header('Content-Type: text/html;charset=utf-8'); 
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}",  "***@*****.com", "*******"); 
$email="[email protected]"; 
$num_mensaje = imap_search($mbox,"FROM $email"); 
$body = imap_fetchbody($mbox,$num_mensaje[0],"1"); 

echo imap_8bit($body)); 

但对我不起作用,我看到这个*$B$3$s$K$A$O!"$=$N$h$&$J

任何想法

预先

由于

+0

定义“in japanese” - 电子邮件具有哪种编码? UTF-8? –

+0

日文字符 – Josiland

+0

我不知道编码,但电子邮件是日文字符 – Josiland

回答

0

由于<ESC>$B是在JIS编码主控制序列中的一个,和你的输出开始*$B,看起来您的数据来自该来源。尝试使用JIS(或SJIS)的mb_convert_encoding

编辑:如果您可能接受来自多种编码的日语,您可以查看mb_detect_encoding函数;利用适当的编码列表。

+0

是的,但是他怎么能在每条消息的基础上检测编码?例如,一些日本消息将以UTF-8格式显示。 –

+0

@Pekka - 我对这个问题的解读是,他对来自单一来源的日文编码文本有特定的问题,但重点是很好。我已经用关于编码检测的注释更新了答案。 – borrible

+0

我尝试mb_convert_encoding($ str,“SJIS”);但它不起作用,并且mb_detect_encoding($ body);我得到ASCII – Josiland

0

我只试过用这段代码将ISO-2022-JP消息的解码为UTF-8,它对我很有帮助。

$temp = iconv_mime_decode($email['overview'][0]->subject,0,"ISO-2022-JP"); 
echo mb_convert_encoding($temp, "UTF-8", "JIS"); 
相关问题