Browserdifferenzen beim Ausgeben und Versenden von Formularen

guenter024

Erfahrenes Mitglied
Hallo PHP-Freunde,

habe folgendes Problem:
Beim Absenden eines Kontaktformulares werden die Eingaben als Bestätigung im HTML-Fenster ausgegeben und gleichzeitig per E-Mail (text/plain) versendet.
Nun geben die Browser (Firefox, Opera und IE, je neueste Version), jedoch die Umlaute unterschiedlich aus.

Die kodierung habe ich momentan wie im folgenden Beispiel:

PHP:
$Vorname = html_entity_decode(utf8_decode($Vorname));  
...

//mail versenden:
$header = "From: $Vorname<$Mail>\n";
                   $header .= "Reply-To: $Mail\n";
                   $header .= "Content-Type: text/plain";
                   mail("$FirmaMail", "$Betreff","
                   Vorname: $Vorname\n ...

//Ausgabe:

echo "Sehr geehrter Herr".utf8_decode($Vorname);    ...

Nun ist das Problem, der IE schreibt anstelle der Umlaute ein "?" .

Wenn ich das utf8_decode weglasse schreibt der Firefox und Mozilla anstelle der Umlaute eine komische Zeichenfolge.

Was mache ich falsch?

Danke im Voraus für Eure Hilfe.

Günter
 
Hi!

Bei der Email kann ich es ja noch verstehen, aber warum im Browser?

Hast du im HTML-Head den Content-Type gesetzt?:
PHP:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Außerdem "decodes" du zweimal das Gleiche:
PHP:
$Vorname = html_entity_decode(utf8_decode($Vorname));  // <- hier
echo "Sehr geehrter Herr".utf8_decode($Vorname);    // <- hier auch nochmal!

Müsste es nicht auch so reichen:
PHP:
//mail versenden:
$header = "From: $Vorname<$Mail>\n";
                   $header .= "Reply-To: $Mail\n";
                   $header .= "Content-Type: text/plain";
                   mail("$FirmaMail", "$Betreff","
                   Vorname:". html_entity_decode(utf8_decode($Vorname))."\n ...

//Ausgabe:

echo "Sehr geehrter Herr ".$Vorname;

Viele Grüße,
Jacka
 
Hallo,
Die Meta-Angeben stehen drin.
Leider klappen auch die anderen Vorschläge nicht.

Das komische ist auch, dass es bei Firefox und Opera geht, bei IE jedoch nicht.
Lasse ich das utf8_decode weg geht es beim IE, bei den anderen beiden aber wieder nicht mehr.

Wie ist es denn jetzt eigentlich in der Regel?
Ich habe da noch nicht richtig den Durchblick...
Bei selfhtml heisst es, dass der richtige Zeichensatz
HTML:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
lautet.
Was ist der Unterschied zwischen dem ISO-8859-1 und dem utf8?

Nochmals Danke.
 
Probier mal folgende Angaben:
PHP:
<?php

	header('Content-Type: text/html;charset=utf-8');

?>
<!DOCTYPE … >
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>

<body>
<form action="" accept-charset="utf-8">
	…
</form>
</body>
</html>
Wenn du die E-Mail dann ebenfalls mit UTF-8 verschickst, brauchst du nichts mehr zu konvertieren.
 
Hallo nochmal,
und erstmal danke für die Hilfe.

Habs gleich mal probiert, aber es klappt irgendwie nicht.
Nun machen alle Browser Probleme.

Der Firefox schreibt Fragezeichen in einer schwarzen Raute, der IE schreibt weisse Quadrate...

Was bedeutet eigentlich dieses utf8

Brauche ich dass wirklich?

Günter
 
puuuhhh,

habs geschafft.
Hatte bei einigen Felder übersehen, die nochmalige utf8-kodierung zu entfernen.

Danke vielmals für Eure Hilfe.

Ich frag mich nur noch, warum bei selfhtml die Angabe
HTML:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
steht.
Das hatte ich nämlich vorher im Meta-Tag drin.

Ciao Günter
 
Hi

Danke für den Link, das ist eine gute Beschreibung.
Jetzt blick ich einigermaßen durch.

Hätten die in Babel damals doch nicht diesen blöden Turm gebaut ...

:rolleyes:
 
Zurück