2011-06-28 19 views
2

私はこのコードで日本語でメールの本文を取得しよう:読む日本語の文字は

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"); 
関連する問題