PHP POST Umlaute Kodierung falsch?
Hi!
Also ich habe ein Kontaktformular auf meiner HTML Seite. Da gibt man halt so Sachen wie Name und eine Nachricht und so weiter ein. Die Daten werden dann per POST an die PHP Datei geschickt, welche diese per Mail verschicken soll. Das Mail versenden klappt auch soweit, aber die Umlaute werden als komische Sonderzeichen angezeigt, der Rest der Mail kommt normal an. Ich dachte vielleicht interpretiert der mail Befehl die Sonderzeichen irgendwie falsch, deshalb habe ich in meiner PHP noch folgende Zeilen eingebaut die die Umlaute aus der Nachricht entfernen sollen bevor sie verschickt wird.
$messagemail = $_POST['message'];
$messagemail = str_replace("ä", "ae" , $messagemail);
$messagemail = str_replace("ü", "ue" , $messagemail);
$messagemail = str_replace("ö", "oe" , $messagemail);
$messagemail = str_replace("Ä", "Ae" , $messagemail);
$messagemail = str_replace("Ü", "Ue" , $messagemail);
$messagemail = str_replace("Ö", "Oe" , $messagemail);
$messagemail = str_replace("ß", "ss" , $messagemail);
$messagemail = str_replace("´", "" , $messagemail);
$messagemail = str_replace("`", "" , $messagemail);
$messagemail = str_replace("é", "" , $messagemail);
$messagemail = str_replace("è", "" , $messagemail);
Allerdings ersetzt der str replace Befehl in dem String garnichts, die Mail kommt wie vorher mit seltsamen Sonderzeichen an. Jetzt habe ich die Befürchtung, dass die Sonderzeichen nicht durch den Mail Befehl so verunstaltet werden, sondern schon durch das Senden mit POST an das PHP Dokument. Wenn die Sonderzeichen nämlich schon falsch im PHP Dokument ankommen, kann str_replace natürlich auch keine ä oder ö usw. finden bzw. ersetzen.
Wie kann ich kontrollieren, dass die Sonderzeichen mit POST richtig übertragen werden??
LG Yoda00
4 Antworten
in die form oder in den html head gehört die zeichencodierung z.b. utf-8 oder sonstige codierung .
entsprechend überall wo man eine zeichencodierung brauch sollte man sie auch angeben , sowohl in mail also auch in html bzw php etc
dein codeschnippsel bringt so also erstmal gar nichts .
hmmm - komische Sonderzeichen entstehen, wenn man zwar UTF8 einliest, aber als beispielsweise ISO 8859-1 verarbeitet oder umgekehrt, ohne vorher die entsprechende Konvertierung durchzuführen.
du kannst auch nur $message = str_replace(["Ü, "ä",...], ["Ue", "ae"], $message); machen
Einfach strikt UTF-8 benutzen!
Also in den Dokumenten ist im <head> Bereich auch utf-8 als meta Tag eingetragen.
Beim Formular das die Nachricht und den Namen usw. einliest, habe ich auch noch accept-charset ="utf-8" in das <post> Objekt geschrieben.
Also eigentlich steht überall utf-8. Wo kann ich denn beim Mail Befehl utf-8 angeben?