我正在使用Zend Framework 1的IMAP服务器连接器,而我正试图从服务器中获取一个主题为Unicode字符的电子邮件。我是这样做的:
$message = $imapServer->getMessage($message_number);
echo $message->getHeader('subject');
问题是它出现了编码:
=?UTF-8?B?2KjYp9uM?=
我可以在名为Zend_Mail
的{{1}}类中找到编码函数,但我找不到解码对!有谁知道如何解码这个字符串?
这是编码器功能:
_encodeHeader
答案 0 :(得分:1)
搜索" RFC2047解码器"并选择一个现有的库来做到这一点。如果没有任何东西可用,请自行滚动。
答案 1 :(得分:-1)
以下是我如何解决它:
switch (strtolower($encoding)) {
case \Zend_Mime::ENCODING_QUOTEDPRINTABLE:
if (preg_match('/^\s?=\?([^\?]+)\?Q\?/', $str, $matches) === 1) {
$str = preg_replace('/\s?=\?'.preg_quote($matches[1]).'\?Q\?/', ' ', $str);
$str = strtr($str, array('?=' => ''));
$str = trim($str);
}
return \Zend_Mime_Decode::decodeQuotedPrintable($str);
case \Zend_Mime::ENCODING_BASE64:
return base64_decode($encodedText);
case \Zend_Mime::ENCODING_7BIT:
case \Zend_Mime::ENCODING_8BIT:
default:
return $encodedText;
}