Der Martin: Zeichencodierung im newsletter nur teilweise korrrekt

Beitrag lesen

Hallo,

Mein php-newsletter-script macht mir bei der Zeichencodierung Ärger:
Umlaute etc. werden im Nachrichteninhalt korrekt dargestellt, also ä,ö,ü sind vorhanden. In der email-Betreffszeile jedoch werden diese verhauen und aus einem für wird ein f�r

welche Codierungen werden denn *tatsächlich* verwendet?

$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Das ist schon okay, ist aber nur das, was auf der Verpackung draufsteht. Was ist wirklich drin?
Die Art, wie zum Beispiel das 'ü' verstümmelt ist, lässt mich vermuten, dass irgendwo in der Verarbeitungskette in Wirklichkeit UTF-8 verwendet wird. Warum eigentlich nicht durchgehend?

$header  = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "From: $absender\r\n";
$header .= "Reply-To: $antwortan\r\n";
$header .= "X-Mailer: PHP ". phpversion();

Ich hoffe, du hast dafür gesorgt, dass Benutzereingaben hier nicht ungeprüft in Headerzeilen wandern.

Warum ist die Zeichencodierung im Inhalt korrekt und im Betreff nicht?

Headerzeilen, die Nicht-ASCII-Zeichen enthalten, müssen zusätzlich zur gewählten Zeichencodierung (ISO-8859-1 oder UTF-8) noch mit einer Transportcodierung versehen werden - entweder Quoted-Printable (bevorzugt) oder base64. Die PHP-Funktion mb_encode_mimeheaders() hilft dir dabei. Mein Gefühl sagt mir aber, dass das nur ein Nebenschauplatz ist und dein eigentliches Problem ein unbewusster Wechsel der Zeichencodierungen ist.
Um das eindeutig feststellen zu können, bräuchte man ein online-Beispiel und den relevanten Quellcodeauszug.

So long,
 Martin

--
Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
Die Zivilisation hatte begonnen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(