Frage von Yoda00, 64

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

Antwort
von GanMar, 46

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.

https://de.wikipedia.org/wiki/Zeichensalat

Antwort
von fazzo66, 9

Hier habe ich eine gute Anleitung zu dem Umlaut Problem zusammengetragen: https://shoprex.de/blog.php?text=probleme-mit-umlauten-und-sonderzeichen-in-mysq...

Antwort
von RakonDark, 31

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 .


Kommentar von Yoda00 ,

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?

Kommentar von RakonDark ,

guck mal das Beispiel bei utf-8

http://php.net/manual/de/function.mail.php

Antwort
von Malemeister, 28

Einfach strikt UTF-8 benutzen!

http://php-de.github.io/jumpto/utf-8/

Antwort
von IchFrage22, 30

du kannst auch nur $message = str_replace(["Ü, "ä",...], ["Ue", "ae"], $message); machen

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten