Einmal mehr: PHP und Sonderzeichen
Hallo Leute,
nachdem ich viel über HTML-Entitäten, Codierungseinstellungen usw. recherchiert habe, bleibt mir eine Frage offen.
Ich sende mit PHP ein Mail, und im Text sind Sonderzeichen:
Zitat:
$brief = " ... Sie k ö nnen ... " ;
mail (... $brief ... );
Im Postfach kommt an:
Zitat:
" ... Sie können ... "
Mein Problem ist, dass der String in $brief einfach nur ein Literal ist. Soweit ich verstanden habe, kann nur der echo-Befehl mit HTML-Entitäten sinnvoll umgehen. Aber solange ich nur ein Literal habe, helfen mir die HTML-Entitäten und Codierungshinweise nicht weiter. Wenn ich schreibe:
Zitat:
$brief = " ... Sie k ö nnen ... " ;
mail (... $brief ... );
dann kommt auch "... Sie k ö nnen ..." im Postfach an. Es hilft auch nichts, die Codierung des Editors zu verändern.
Momentan löse ich das Problem so:
Zitat:
$brief = " ... Sie k" . chr(246) . "nnen ..." ;
Da das ziemlich hässlich ist, bin ich dankbar für einen Tipp: Kann man das eleganter lösen?
Danke für jeden Hinweis :D
Lösung: Codierung Mail und Codierung Editor
@Tomes: Danke für Deinen Code! Das ist genau das Puzzlestück, das mir fehlte :D :D Da wir geografisch zu weit auseinander wohnen, kann ich Dir kein Bierchen spendieren.
Ich hab noch ein wenig herumprobiert. Sonderzeichen entstehen offensichtlich, wenn die Codierung des editierten PHP-Files und die Codierungsangabe im Mailheader sich unterscheiden.
Beide können UTF-8 sein oder beide können ISO-8859-1 sein, in jedem Fall kommen lesbare Zeichen an (...jedenfalls bezgl. unserer deutschen Umlaute).
Zusammenfassung @ alle, die das Problem auch haben: Hier überall zählen Codierungen.
- Editor:
- Codierung Eingabemethode
- Codierung der Datei, wie sie effektiv gespeichert wird (bspw. beim XEmacs mit C-x C-m f einstellbar)
- Mailtransport:
- Der Mailserver tut wahrscheinlich nichts mit der Codierung selbst. Der transportiert Dateien und erweitert den Header. Spamassassins untersuchen die Dateien und erweitern ebenfalls den Header. Aufgrund des 7/8-Bit-Transportes dürften 16-Bit-Codierungen neue Probleme aufwerfen (-->undefined)
- Codierung zum Mailen im Header mitgeben für den Mailclient!
- Mailclient:
- Codierung des Mailclients zur Darstellung: normalerweise gibt es bei der Einstellung einen Punkt "Auto". Das Mailprogramm liest bei "Auto" die Codierung aus dem Mailheader. Wenn man die Codierungen von Hand umstellt, sieht man, wie die lesbaren Zeichen kommen und gehen.
- Codierungsangabe im Header