Probleme mit Charset | Datenübertragung
Markus
- php
0 Gonzo
Hallo Zusammen,
ich bastel gerade an zwei kleinen PHP Skripts und komme jetzt an einer Stelle nicht weiter. Es geht um folgendes:
1.) Kunden können auf einer Kontaktseite im Internet eine Anfrage erstellen.
2.) Es wird eine E-Mail an mich versendet. Dafür nutze ich htmlMimeMail. Bei der Erstellung der Mail bin ich auf das erste Problem gestoßen. Deutsche Sonderzeichen wurden nicht richtig übertragen. Meine E-Mails enthielten z.B. für 'ß' das Zeichen 'ß'. Dieses Problem glaubte ich gelöst zu haben, in dem ich im Formular accept-charset="ISO-8859-1" eingefügt habe. Soweit so gut. Die Zeichen werden in der Mail richtig angezeigt.
3.) In der Mail wird ein Link generiert, über den eine Seite aufgerufen werden kann auf der sich dann ein mit den Daten aus der E-Mail vorgefülltes Formular befindet. Die Daten hänge ich an die URL an und lese mit GET aus.
Jetzt musste ich leider feststellen, dass obwohl die Zeichen in der E-Mail und im Link richtig angezeigt werden, diese in den Textboxen wieder falsch sind. Interessant ist auch, dass wenn ich den Link nicht aus dem Mailprogramm öffne und kopiere und dann einfüge, alles funktioniert.
Hat jemand eine Idee, was ich da machen kann? Muss ich deutsche Zeichen evtl. irgendwie vorbereiten bevor ich sie verwenden kann?
Bin für jeden Tipp dankbar.
Viele Grüße,
Markus
1.) Kunden können auf einer Kontaktseite im Internet eine Anfrage erstellen.
2.) Es wird eine E-Mail an mich versendet. Dafür nutze ich htmlMimeMail. Bei der Erstellung der Mail bin ich auf das erste Problem gestoßen. Deutsche Sonderzeichen wurden nicht richtig übertragen. Meine E-Mails enthielten z.B. für 'ß' das Zeichen 'ß'.
Wenn deutsche Zeichen als zwei merkwürdige Buchstaben übertragen werden (lies: zwei Bytes), dann handelt es sich in aller Regel um Unicode/utf-8 und eine falsche Dekodierung dessen.
Dieses Problem glaubte ich gelöst zu haben, in dem ich im Formular accept-charset="ISO-8859-1" eingefügt habe.
Der Kern der Sache ist eher, dass du in der Mail, die du an dich versendest, keinen oder den falschen, d.h. zu den Formulardaten unpassenden Zeichensatz angibst. Auch wenn's jetzt funktioniert, überprüfe wenigstens, ob die Mails mit einer Zeile "Content-Type: text/plain; charset=iso-8859-1" bei dir ankommen (eventuell statt text/plain text/html, wichtig ist hier das charset-Anhängsel). Die bessere Lösung steht unten.
3.) In der Mail wird ein Link generiert, über den eine Seite aufgerufen werden kann auf der sich dann ein mit den Daten aus der E-Mail vorgefülltes Formular befindet. Die Daten hänge ich an die URL an und lese mit GET aus.
Jetzt musste ich leider feststellen, dass obwohl die Zeichen in der E-Mail und im Link richtig angezeigt werden, diese in den Textboxen wieder falsch sind.
Letztlich wohl die gleiche Ursache.
Vermutlich verwenden deine Seiten utf-8. So dem so ist, entferne besser das accept-charset-Attribut und sorge dafür, dass der Mail wie oben analog beschrieben charset=utf-8 mitgegeben wird. Du hättest dann eine durchgängige und zudem universelle Kodierung.