Конвертировать в utf-8 - из электронной почты - PullRequest
2 голосов
/ 31 декабря 2011

Я использую Zend_Mail_Storage_Pop3 для получения почтовых сообщений.

Моя тема на почте Foo / æøå

$message->getHeader('content-type') дает мне text/plain; charset=ISO-8859-1; format=flowed

Перед любой кодировкой мой $message->subject выглядит следующим образом

Foo/µ°Õ - 2h - comment

Тогда я пытаюсь сделать iconv по теме

$message->subject = iconv('ISO-8859-1','UTF-8', $message->subject);

Теперь моя тема выглядит так

Foo/├ª├©├Ñ - 2h - comment

Что не является utf-8:)

Так что мне делать? Я также пытался с utf8_encode и mb_convert_encoding но это дает тот же результат

Ну, я понял - но это немного грязно, но работает

$this->mails = new Zend_Mail_Storage_Pop3(...);
$currentMessageId = $this->mails->getNumberByUniqueId($this->mails->getUniqueId($messageId));
$raw = $this->mails->getRawHeader($currentMessageId);
$l = explode("\n", $raw);
foreach($l AS $m) {
    if (strpos($m, 'Subject: ') === 0) {
        $subject = trim(str_replace('Subject: ', '', $m));
        break;
    }
}

$subject = str_replace("_"," ", mb_decode_mimeheader($subject));

1 Ответ

2 голосов
/ 31 декабря 2011

Поле content-type обычно содержит кодировку для тела сообщения, а не для заголовка.Можете ли вы взглянуть на сообщение в необработанном формате?Поле в ISO 8859-1 должно выглядеть следующим образом:

=?ISO-8859-1?Q?Graphgr=F6=DFen?=

, в то время как заголовок в кодировке UTF8 должен выглядеть следующим образом:

=?UTF-8?B?w5xtbMOkdXRlIGluIFVURjg=?=
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...