2012-03-24 52 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