2012-03-24 27 views
1

我已经与mimeDecode koi8r字符集的问题,MimeDecode koi8r字符集

作为一个例子:

主题:= KOI8-R B 8NLJ18XUIQ == = 来自:?????= KOI8 -R乙4czFy9PBzsTSIPfPzMvP1w == =

变为:???

主题:п÷я─п╦п╡п╣я┌! 来源:АлександрВолков

它应该是如下,

主题:Привет! 来源:АлександрВолков

所以确切的问题是

 if (is_string($this->_decode_headers)) { 
      $conv = @iconv($charset, $this->_decode_headers, $text); 
      $text = ($conv === false) ? $text : $conv; 
     } 

谢谢。

UPDATE 解决了,问题是电子邮件标题被保存到其他字符集中的数据库。

回答

5

难道你不想使用mb_decode_mimeheader

iconv翻译编码的字符串,这里您的字符串只是ascii。

mb_internal_encoding("UTF-8"); 
$string = "=?KOI8-R?B?8NLJ18XUIQ==?="; 
$conv = mb_decode_mimeheader($string); 

这将工作前提是您要发送当然UTF-8编码的字符串,否则,你必须适应的第一个命令

+0

一些解释:有三个“编码”这里在这种情况下:1 )字符串的编码是ascii,因为它是电子邮件标题中唯一接受的字符串。 2)字符串“包含”KOI8-R字符(西里尔字母),用mime编码编码(这是一种只用ascii编写其他编码字符的方法)3)输出'$ conv'包含UTF-8字符'mb_internal_encoding') – Immae 2012-03-24 22:22:14

+0

嗨,我很抱歉,但我需要它在函数_decodeHeader [链接](http://svn.php.net/viewvc/pear/packages/Mail_mimeDecode/trunk/Mail/mimeDecode。 PHP?视图=共) – 2012-03-24 22:33:16