2012-03-24 8 views
1

ich ein Problem mit Koi8-R charset mit mimedecode haben,mimedecode Koi8-R charset

Als Beispiel:

Betreff: = KOI8-R B 8NLJ18XUIQ == = Von:???? = KOI8 -R B 4czFy9PBzsTSIPfPzMvP1w == =

Wird:?

Betreff: п ÷ я─п╦п╡п╣я┌! Von: Александр Волков

Es sollte wie folgt lauten,

Betreff: Привет! Von: Александр Волков

Also das genaue Problem ist

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

Danke.

UPDATE Gelöst, das Problem war, dass E-Mail-Header in db in anderen Zeichensatz gespeichert wurden.

Antwort

5

Wollen Sie nicht mb_decode_mimeheader verwenden?

iconv übersetzt codierte Zeichenfolgen, hier ist Ihre Zeichenfolge nur ascii.

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

Dies funktioniert, vorausgesetzt, Sie utf-8 kodierten String natürlich senden, sonst hat man den ersten Befehl

+0

eine Erklärung anpassen müssen: Es gibt drei „encoding“ hier in dieser Situation: 1) Die Kodierung der Zeichenfolge ist ASCII, weil sie die einzige ist, die im Header von E-Mails akzeptiert wird. 2) Die Strings "enthalten" KOI8-R Zeichen (kyrillisch), codiert in Mime-Codierung (es ist eine Möglichkeit, andere Kodierungszeichen mit nur ASCII zu schreiben) 3) die Ausgabe $ Conv enthält UTF-8 Zeichen (durch die Wahl von 'mb_internal_encoding') – Immae

+0

Hallo, tut mir leid, aber ich muss es innerhalb der Funktion _decodeHeader [link] tun (http://svn.php.net/viewvc/pear/packages/Mail_mimeDecode/trunk/Mail/mimeDecode. php? view = co) –