2012-03-24 2 views
1

Я проблема с кодировкой koi8r с mimeDecode,MimeDecode koi8r кодировка

В качестве примера:

Предмет: = KOI8-R B 8NLJ18XUIQ == = От:???? = KOI8 -R B 4czFy9PBzsTSIPfPzMvP1w == =

становится:?

Тема: п ÷ я─п╦п╡п╣я┌! От: Александр Волков

Оно должно быть следующим,

Тема: Привет! От: Александр Волков

Так точная проблема является

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

Спасибо.

ОБНОВЛЕНИЕ Решено, проблема заключалась в том, что заголовки электронной почты были сохранены в db в другой кодировке.

ответ

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

+0

Привет, извините, но мне нужно это делать внутри функции _decodeHeader [link] (http://svn.php.net/viewvc/pear/packages/Mail_mimeDecode/trunk/Mail/mimeDecode. PHP? вид = со) –

Смежные вопросы