PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Umlaute aus dem Kontaktformular richtig wiedergeben (http://www.selfphp.de/forum/showthread.php?t=25223)

der_schweriner0 02.04.2014 19:34:33

Umlaute aus dem Kontaktformular richtig wiedergeben
 
Hallo Leute,

habe ein Problem mit meinem Kontaktformular. Es gibt ein vergleichbares Thema, aber es hilft mir nicht weiter.
Mein Kontaktformular erzeugt folgende Fehler:
PHP-Code:

$nachricht "Es wurde das Kontaktformular ausgefüllt.\n\nName: $name\nOrt: $ort\n\nNachricht:\n$nachricht\n\nBittet um Benachrichtigung per $Benach: $Ben\n"

Wenn ich statt des "ü" in "ausgefüllt" "ü" schreibe, wird in der erhaltenen E-Mail geschrieben: "Es wurde das Kontaktformular ausgefüllt."
OK. nicht weiter schlimm. Dann lass ich einfach das "ü" stehen.

Problematischer sind die übergebenen Formularfelder. Wenn ich z.B. im Feld "Ort" Brül erhalte, steht in der Mail: BrÄ1/4l

Wie kann ich also verhindern, dass ich dieses kauderwelsch erhalte? Sollte ich die Formularfelder alle auf Umlaute überprüfen und neu Formatieren? wenn ja, stelle ich mir das doch sehr umständlich vor.

Für Hilfe oder Anregungen wäre ich sehr dankbar!!!

vt1816 02.04.2014 19:53:57

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Welchen Charset hat das Formular?

der_schweriner0 02.04.2014 20:32:34

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Danke schonmal für die schnelle Antwort.
Also die Seiten sind auf utf-8 ausgelegt.
Wäre für die Übertragung anderes w.z.b. ISO 8859-1 sinnvoller?

vt1816 02.04.2014 21:14:31

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Hast Du es mal ausprobiert?

Wie sieht der Kopf Deiner Datei(en) aus?

meikel (†) 03.04.2014 02:31:50

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Zitat:

Zitat von der_schweriner0 (Beitrag 146173)
habe ein Problem mit meinem Kontaktformular.
...
Wenn ich z.B. im Feld "Ort" Brül erhalte, steht in der Mail: BrÄ1/4l

Aha. Die Mail sieht scheiße aus und Du lieferst eine einsame Scriptzeile. Das wird wohl eine längere Diskussion werden...

der_schweriner0 03.04.2014 08:04:32

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Zitat:

Zitat von meikel (Beitrag 146177)
Aha. Die Mail sieht scheiße aus und Du lieferst eine einsame Scriptzeile. Das wird wohl eine längere Diskussion werden...

Wozu brauchst du denn das script???
Der Anzeigefehler in der erhaltenen Mail liegt doch sicher nicht am Script.

Hab es mit charset=ISO 8859-1 ausprobiert und siehe da... es funktioniert.
Allerdings sind plötzlich Funktionalitäten meines Java-Skriptes nicht mehr verfühgbar.

Lassen sich ISO 8859-1 und utf-8 irgendwie kombinieren?

meikel (†) 03.04.2014 08:48:54

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Zitat:

Zitat von der_schweriner0 (Beitrag 146178)
Wozu brauchst du denn das script???

Weil ich mir angucken möchte, welche weiteren Gurken Du bei Erzeugung und Versand der Email sonst noch so verbrichst. Ich vermute mal, die PHP Klassen Swiftmailer u/o phpmailer kennste sicher auch nicht.
Zitat:

Der Anzeigefehler in der erhaltenen Mail liegt doch sicher nicht am Script.
Welchen Charset haste eingestellt, wie sehen Deine MIME boundary parts aus und mit welchem content-transfer-encoding wird die Mail abgeschickt? Email wurde für 7bit US-ASCII definiert. Für jedes zusätzliche Zeichen mußte Dich schon ordentlich anstrengen
Zitat:

Hab es mit charset=ISO 8859-1 ausprobiert und siehe da... es funktioniert.
Solche Emails werden von jedem korrekt arbeitenden SPAM Filter gefressen.
Zitat:

Allerdings sind plötzlich Funktionalitäten meines Java-Skriptes nicht mehr verfühgbar.
Aha. Ich vermute mal, daß sich der Browser am HTML sicher die Zähne ausbeist.
Zitat:

Lassen sich ISO 8859-1 und utf-8 irgendwie kombinieren?
Nein. Bei ISO-8859-1 werden "die zusätzlichen Zeichen" als HTML Entities zum Browser geschickt, bei UTF-8 handelt es sich um multibyte charsets.

Es muß mit dem passenden HTTP Header
zB.
PHP-Code:

header('Content-type: text/html; charset=UTF-8'); 

oder
PHP-Code:

header('Content-type: text/html; charset=ISO 8859-1'); 

erst mal das Protokoll bedient werden.

Selbstredent darf im head Tag dann nix anderes stehen. Beispiel:
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
...

oder
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
...

Beachte bitte auch, daß in der 1. Zeile ein korrekter DYCTYPE angegeben werden muß.

Das alles ist noch harmlos. Email dagegen ist hohe Schule. Und weil Programmierer idR. zu faul sind, tonnenweise RFCs zu studieren, um die stupide mail() Funktion korrekt zu füttern, verwenden die stattdessen eine der og. Mailklassen.

DokuLeseHemmung 04.04.2014 01:01:28

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Zitat:

Und weil Programmierer idR. zu faul sind, tonnenweise RFCs zu studieren, um die stupide mail() Funktion korrekt zu füttern, verwenden die stattdessen eine der og. Mailklassen.
Ämmm..
Ich fühle mich angesprochen...
(und ich glaube, du hast recht)

Ckaos 04.04.2014 07:04:32

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Hi,

wer sich da nicht angesprochen fühlt, hat noch nicht genug Mails verschickt die
in Spam gelaufen sind!

MfG

CKaos

sysop 04.04.2014 09:25:17

AW: Umlaute aus dem Kontaktformular richtig wiedergeben
 
Mail ist überhaupt problematisch, zumal man im Mailclient auch noch eine Standardcodierung einstellen kann, die verwendet wird, wenn der header nicht korrekt angeben ist (meiner ist z.B. immer utf-8 wenn nicht anders angeben).

Du könntest versuchen voir dem Versand mit http://us1.php.net/manual/de/function.htmlentities.php zu arbeiten, was dich aber von einer korrekten Headerangabe aber nicht befreit.

utf8_encode()/decode() sind auch noch Hilfsmittel die du zu Rate ziehen kannst

Dein blaues Wunder wirst du dann sicherlich erleben, wenn du deine Mails in Outlook, Thunderbirs und einem Androiden testest. Das wird dir den letzten Nipf rauben....

good luck


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30:28 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.