Umlaute Mailformular werden nicht korrekt angezeigt
klickmich
- html
Hallo Forum,
ich habe folgendes Problem:
Ich habe ein Mailformular in eine Website integriert, welches im Zusammenspiel mit einem Perl-Skript funktioniert.
Leider kommen die Formularmails mit fehlerhafter Darstellung der Umlaute in Outlook an. Das Ganze sieht dann beispielsweise so aus:
überschreiten / länge
Ich habe schon tagelang getestet, aber leider immer noch keine Lösung gefunden. Woran könnte das liegen??
Bitte um einen Tipp.
k
ich habe folgendes Problem:
Ich habe ein Mailformular in eine Website integriert, welches im Zusammenspiel mit einem Perl-Skript funktioniert.
Welche zeichenencoding verwendet das der HTML output
In welchem Encoding wurde das perlscript gespeichert?
Leider kommen die Formularmails mit fehlerhafter Darstellung der Umlaute in Outlook an. Das Ganze sieht dann beispielsweise so aus:
Welches Encoding wird auf den mailtext / mailheader angewendet.
Welche Encoding Angabe wird in den verschiedenen mailparts gemacht?
Ein Tipp: Durchforste das Archiv.
mfg Beat
Welche zeichenencoding verwendet das der HTML output
In welchem Encoding wurde das perlscript gespeichert?
html: charset=utf-8
perl: utf-8
Welches Encoding wird auf den mailtext / mailheader angewendet.
Welche Encoding Angabe wird in den verschiedenen mailparts gemacht?
Was ist damit gemeint?
Ein Tipp: Durchforste das Archiv.
Ja, wenn ich weiß, nach was ich suchen muss, tue ich das natürlich.
Irgendwie weiß ich nicht, wo mein Fehler sein soll.
Welches Encoding wird auf den mailtext / mailheader angewendet.
Welche Encoding Angabe wird in den verschiedenen mailparts gemacht?Was ist damit gemeint?
Öffne eine reguläre Mail von dir.
Dort steht:
Content-type: text/plain; charset="iso-8859-1"
oder eine andere Angabe
Wenn es eine multipart message ist, muss jeder part eine Angabe aufweisen, die dann natürlich den Tatsachen entsprechen soll.
mfg Beat
Hello,
Welches Encoding wird auf den mailtext / mailheader angewendet.
Welche Encoding Angabe wird in den verschiedenen mailparts gemacht?Was ist damit gemeint?
In einer Mail darfst Du nur ASCII verwenden, oder musst die abweichende Codierung angeben.
Ein Tipp: Durchforste das Archiv.
Ja, wenn ich weiß, nach was ich suchen muss, tue ich das natürlich.
Suche nach "Mail Encoding", "Mail Codierung", "Mail Kodierung" oder nach "MIME Mail"
Liebe Grüße aus Syburg
Tom vom Berg
Hello,
»» > Welches Encoding wird auf den mailtext / mailheader angewendet.
»» > Welche Encoding Angabe wird in den verschiedenen mailparts gemacht?
»»
»» Was ist damit gemeint?In einer Mail darfst Du nur ASCII verwenden, oder musst die abweichende Codierung angeben.
Hm, das verstehe ich immer noch nicht. Kurz zur Erklärung:
Ich selbst benutze Outlook nicht, allerdings derjenige, für den ich das html-Kontaktformular erstellte. Auf der Webseite ist also das Formular, welches mit einem perl-Skript im Zusammenhang funktioniert. Ein Seitenbesucher füllt das Formular aus. Der Seitenbetreiber erhält in Outlook eine Mail. Der Inhalt dieser Mail wird nicht mit korrekten Umlauten dargestellt.
Liegt es daran, dass in Outlook eine andere Codierung eingestellt ist und müsste ich die der Seite und des Perlskriptes von UTF-8 auf iso-8859-1 umstellen?
Hi,
Liegt es daran, dass in Outlook eine andere Codierung eingestellt ist und müsste ich die der Seite und des Perlskriptes von UTF-8 auf iso-8859-1 umstellen?
Nein - sondern innerhalb der E-Mail auf dem definierten Weg angeben, in welcher Kodierung sie verfasst ist - wie sonst glaubst du wohl, soll das darstellende Programm das in Erfahrung bringen?
MfG ChrisB
Hello,
In einer Mail darfst Du nur ASCII verwenden, oder musst die abweichende Codierung angeben.
Hm, das verstehe ich immer noch nicht. Kurz zur Erklärung:
Ich selbst benutze Outlook nicht, allerdings derjenige, für den ich das html-Kontaktformular erstellte. Auf der Webseite ist also das Formular, welches mit einem perl-Skript im Zusammenhang funktioniert. Ein Seitenbesucher füllt das Formular aus. Der Seitenbetreiber erhält in Outlook eine Mail. Der Inhalt dieser Mail wird nicht mit korrekten Umlauten dargestellt.Liegt es daran, dass in Outlook eine andere Codierung eingestellt ist und müsste ich die der Seite und des Perlskriptes von UTF-8 auf iso-8859-1 umstellen?
Das können wir Dir nicht sagen. Wir können hier keine Antwort mit Bestimmtheit geben, solange wir das Perl-Script nicht kennen und noch nicht einmal eine Mustermail haben, so wie sie beim Empfänger ankommt.
_Vermutlich_ wurde das Perl-Script geschrieben in einer Zeit, als man noch nicht das UTF-8-Babel angerichtet hatte und rechnet daher mit ISO8859-1 als Eingangskodierung. Diese wird es _vermutlich_ sogar richtig verarbeiten und mit entsprechender Kennung als Mail weitersenden.
Nun bekommt es aber UTF-8 geliefert, was es als ISO8859-1 weiterleitet, ohne aber eine Rückkodierung vorzunehmen, da der Entwickler ja davon ausgegengen ist, dass er ISO8859-1 geliefert bekommt.
Alles verstanden?
Liebe Grüße aus Syburg
Tom vom Berg
» Welche zeichenencoding verwendet das der HTML output
» In welchem Encoding wurde das perlscript gespeichert?html: charset=utf-8
Das glaube ich nicht. Die von dir gezeigte Darstellung ist ein utf-8 ä in ISO.
Struppi.
Hello,
» Welche zeichenencoding verwendet das der HTML output
» In welchem Encoding wurde das perlscript gespeichert?html: charset=utf-8
Das glaube ich nicht. Die von dir gezeigte Darstellung ist ein utf-8 ä in ISO.
Ich schon, denn es kommt doch hier nicht darauf an, in welcher Kodierung das Perl-Script gespeichert wurde, sondern welche Kodierung es als Eingang erwartet und welche Kodierung es daraus im Ausgang macht.
Nur, die Literale, die das Perlscript selber hinzufügt zu den erhaltenden Daten, die also im Script hardcoded enthalten sind, sind betroffen von der Kodierung des Scriptes selbst. Wenn das aber nur welche sind, wie die üblichen Mail-Header, dann fällt es nicht auf, weil diese in ASCII (7-Bit) gehalten sind.
Liebe Grüße aus Syburg
Tom vom Berg
» > » Welche zeichenencoding verwendet das der HTML output
» > » In welchem Encoding wurde das perlscript gespeichert?
» >
» > html: charset=utf-8
^^^^^^
»
» Das glaube ich nicht. Die von dir gezeigte Darstellung ist ein utf-8 ä in ISO.Ich schon, denn es kommt doch hier nicht darauf an, in welcher Kodierung das Perl-Script gespeichert wurde, sondern welche Kodierung es als Eingang erwartet und welche Kodierung es daraus im Ausgang macht.
Schrieb ich doch.
Struppi.
Hello,
» > » Welche zeichenencoding verwendet das der HTML output
» > » In welchem Encoding wurde das perlscript gespeichert?
» >
» > html: charset=utf-8
^^^^^^
»
» Das glaube ich nicht. Die von dir gezeigte Darstellung ist ein utf-8 ä in ISO.Ich schon, denn es kommt doch hier nicht darauf an, in welcher Kodierung das Perl-Script gespeichert wurde, sondern welche Kodierung es als Eingang erwartet und welche Kodierung es daraus im Ausgang macht.
Schrieb ich doch.
Nee. Ich denke, dass DU dich jetzt im Kreise drehst, oder habe doch ICH den Denkknoten?
Fixpunkt der Betrachtung ist hier das Perl-Script. Das ist uralt und berücksichtigt noch keine anderen Kodierungen als ISO8859-1, bzw. gar keine, also die damals automatisch eingestellte und die war vermutlich ISO8859-1.
Das HTML ist aber inzwischen auf utf-8 umgestellt, daher liefert es die Umlaute auch als Multibyte-Codes an das Perl-Script. Das erwartet aber Single-Byte-Codes und macht daher aus einem Umlaut mehrere Zeichen. Da das Perl-Script die dann auch folgerichtig als Single-Byte-Code weiergibt, stellt sie Outlook anshließend auch als Single-Byte-Code dar.
Wenn also klickmich nun das HTML-Formular wieder auf ISO8859-1 umstellen würde, wäre der Fehler vermutlich (erstmal) verschwunden. Ob die Header-Kodierung und die des Contents (die ja vermutlich gar nicht vorgenommen werden) dann aber _immer_ richtig interpretiert werden vom Mailclient, ist die nächste Frage.
Um das HTML-Dokument allerdings auf ISO8859-1 zurückstellen zu können, müsste man mehr über das Serverumfeld wissen. Es würde ja voraussichtlich keinen Zweck haben, einen Meta-Tag ins Dokument aufzunehmen, weil die Server-Header Vorrang haben.
Liebe Grüße aus Syburg
Tom vom Berg
Nee. Ich denke, dass DU dich jetzt im Kreise drehst, oder habe doch ICH den Denkknoten?
Nein, du hast recht. Ich hab den Text so interpetiert, dass diese Zeichen auf einer HTML Seite so dargestellt werden.
Das Problem liegt allein bei der Kodierung der Mail, ich hatte ihm ja schon ein passendes Modul empfohlen.
Struppi.
»» > » > » In welchem Encoding wurde das perlscript gespeichert?
»» > » >
»» > » > html: charset=utf-8
»» ^^^^^^
»» > »
»» > » Das glaube ich nicht. Die von dir gezeigte Darstellung ist ein utf-8 ä in ISO.
Woran erkennst Du das denn?
Ich habe jetzt in das Perl-Skript (http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/) folgende Zeile eingefügt:
print MAIL "Content-Type: text/plain; charset="utf-8"\n";
Und jetzt gehts.
Bezüglich meines Wechsel-Posts unter der Rubrik "Perl": Ich ging davon aus, dass ich hier falsch bin - offensichtlich nicht.
Hello,
Ich habe jetzt in das Perl-Skript (http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/) folgende Zeile eingefügt:
print MAIL "Content-Type: text/plain; charset="utf-8"\n";
Und jetzt gehts.
Das bezieht sich aber nur auf den Body.
Ich kann leider zu wenig Perl, aber ich meine zu erkennen, dass die Header nicht adäquat vorbereitet werden. Das bedeutet also, dass das Script wieder streikt, wenn Du z.B im Subject Umlaute stehen hast.
Liebe Grüße aus Syburg
Tom vom Berg
»» Und jetzt gehts.
Das bezieht sich aber nur auf den Body.
Ich kann leider zu wenig Perl, aber ich meine zu erkennen, dass die Header nicht adäquat vorbereitet werden. Das bedeutet also, dass das Script wieder streikt, wenn Du z.B im Subject Umlaute stehen hast.
Auch die Mail-Betreffzeile wird korrekt angezeigt. Es scheint nun offenbar alles zu funktionieren.