Stefan+ (Stefan Froehlich)
2004-12-16 11:52:54 UTC
Hallo,
gerade eben hatte ich die Aufgabe, UTF-8 Zeichenketten per Mail zu
verschicken. An sich kein Problem, bis auf die Header (From, Cc, Subject),
bei denen man entsprechend codieren muss. Nun gibt es dafuer an sich die
Funktion mb_encode_mimeheader, in meiner Naivitaet habe ich sie mit
| $result = mb_encode_mimeheader($string, 'UTF-8', 'Q');
aufgerufen ($string enthaelt dabei nach utf-8 codierte Zeichen). Das
Ergebnis war hoechst irritierend, aus "äöü" wird:
| =?UTF-8?Q?=C3=83=C2=A4=C3=83=C2=B6=C3=83=C2=BC?=
Setzt man hingegen den Zeichensatz auf 'ISO-8859-1', erhaelt man das, was
man erwartet:
| $result = mb_encode_mimeheader($string, 'ISO-8859-1', 'Q');
| =?ISO-8859-1?Q?=C3=A4=C3=B6=C3=BC?=
Die Funktion QP-codiert also nicht nur, sondern konvertiert auch noch ganz
unaufgefordert die (ohnehin bereits codierten) Zeichen. Welche Trivialitaet
habe ich uebersehen, um das abzustellen?
Im Moment behelfe ich mir mit
| $result = mb_encode_mimeheader($string, 'ISO-8859-1', 'Q');
| $result = preg_replace('/ISO-8859-1/', 'UTF-8', $result);
was zwar nun ganz ausgezeichnet funktioniert, aber wirklich hoechst
unelegant ist. Zweckdienliche Hinweise, wie ich diesen Workaround wieder
loswerde, werden gerne entgegengenommen...
Servus,
Stefan
gerade eben hatte ich die Aufgabe, UTF-8 Zeichenketten per Mail zu
verschicken. An sich kein Problem, bis auf die Header (From, Cc, Subject),
bei denen man entsprechend codieren muss. Nun gibt es dafuer an sich die
Funktion mb_encode_mimeheader, in meiner Naivitaet habe ich sie mit
| $result = mb_encode_mimeheader($string, 'UTF-8', 'Q');
aufgerufen ($string enthaelt dabei nach utf-8 codierte Zeichen). Das
Ergebnis war hoechst irritierend, aus "äöü" wird:
| =?UTF-8?Q?=C3=83=C2=A4=C3=83=C2=B6=C3=83=C2=BC?=
Setzt man hingegen den Zeichensatz auf 'ISO-8859-1', erhaelt man das, was
man erwartet:
| $result = mb_encode_mimeheader($string, 'ISO-8859-1', 'Q');
| =?ISO-8859-1?Q?=C3=A4=C3=B6=C3=BC?=
Die Funktion QP-codiert also nicht nur, sondern konvertiert auch noch ganz
unaufgefordert die (ohnehin bereits codierten) Zeichen. Welche Trivialitaet
habe ich uebersehen, um das abzustellen?
Im Moment behelfe ich mir mit
| $result = mb_encode_mimeheader($string, 'ISO-8859-1', 'Q');
| $result = preg_replace('/ISO-8859-1/', 'UTF-8', $result);
was zwar nun ganz ausgezeichnet funktioniert, aber wirklich hoechst
unelegant ist. Zweckdienliche Hinweise, wie ich diesen Workaround wieder
loswerde, werden gerne entgegengenommen...
Servus,
Stefan
--
http://kontaktinser.at/ - kostenlose Kontaktanzeigen fuer Österreich
Richtungsweisend bleibt richtungsweisend: Stefan braucht diese Welt!
(Sloganizer)
http://kontaktinser.at/ - kostenlose Kontaktanzeigen fuer Österreich
Richtungsweisend bleibt richtungsweisend: Stefan braucht diese Welt!
(Sloganizer)