Mariane D.: Probleme mit Chraracter-Encoding

Hallo!

Ich nutze folgendes Kontaktformular http://css-tricks.com/nice-and-simple-contact-form/ und habe ein Problem mit der Darstellung von Sonderzeichen.

Im Kontaktformular werden Umlaute (öüä) korrekt dargestellt, in der versendeten E-Mail werden die Sonderzeichen falsch dargestellt. (ÀöÌ).

In den Header der index.html schreibe ich

<meta charset="utf-8" />

oder auch

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

und die Datei speichere ich mit UltraEdit im UTF-8-Format.

Ich habe heute eine Weile an dem Problem gespielt, komme aber leider zu keiner Lösung.

Kann mir einer der Profis hier im Form weiterhelfen? Was muss ich machen, damit Sonderzeichen wie z. B. Umlaute in der versendeten E-Mail richtig codiert werden?

Vielen Dank und eines schönen Abend
Mariane D.

  1. Hi,

    in der versendeten E-Mail werden die Sonderzeichen falsch dargestellt. (ÀöÌ).

    die E-Mail ist offenbar ISO-kodiert.

    und die Datei speichere ich mit UltraEdit im UTF-8-Format.

    Auch die des von Dir genutzten Kontaktformular-Scripts?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Auch die des von Dir genutzten Kontaktformular-Scripts?

      Wenn ich die Datei contactengine.php mit UltraEdit im Format UTF-8 speichere, erhalte ich die selben falsch kodierten Sonderzeichen.

      In der Datei contactengine.php befindet sich kein Header, sodass dort auch kein <meta charset="utf-8" /> einfügen kann.

  2. Hi!

    Im Kontaktformular werden Umlaute (öüä) korrekt dargestellt, in der versendeten E-Mail werden die Sonderzeichen falsch dargestellt. (ÀöÌ).
    In den Header der index.html schreibe ich
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

    Auch E-Mail kennt Header, und einer davon ist heißt Content-Type.

    Lo!

    1. Auch E-Mail kennt Header, und einer davon ist heißt Content-Type.

      Ah, das hat mich schon mal weitergebracht, danke!

      Auf http://php.net/manual/en/function.mail.php habe ich auch einen entsprechenden Header gefunden:

      // To send HTML mail, the Content-type header must be set
      $headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

      Das passe ich nun ein wenig an

      $headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

      und füge es in die Datei contactengine.php nach $Message = Trim(stripslashes($_POST['Message'])); ein.

      Unten mache ich aus

      $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

      noch folgendes:

      $success = mail($EmailTo, $Subject, $headers, $Body, "From: <$EmailFrom>");

      In der versendeten E-Mail wird der Header aber nicht verwendet. Anstatt einen Header zu erzeugen, steht

      $headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

      als Text in der E-Mail. :-(

      Könntet ihr mir als nicht PHP-Programmierer noch einen Tipp geben? Danke!

      1. Hi,

        Unten mache ich aus

        $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

        noch folgendes:

        $success = mail($EmailTo, $Subject, $headers, $Body, "From: <$EmailFrom>");

        Und du nimmst an, die Parameter für die Funktion mail und ihre Reihenfolge kannst du dir so nach Belieben ausdenken ...?

        In der versendeten E-Mail wird der Header aber nicht verwendet. Anstatt einen Header zu erzeugen, steht

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

        als Text in der E-Mail. :-(

        Schau an, der Text, den du als Textinhalt für die E-Mail angegeben hast, bildet jetzt also den Textinhalt der E-Mail.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Und du nimmst an, die Parameter für die Funktion mail und ihre Reihenfolge kannst du dir so nach Belieben ausdenken ...?

          Dachte ich, ja.

          Mit deinem Hinweis habe ich diese Seite http://dnaber.de/blog/2010/kontaktformulare-ohne-zeichensalat/ gefunden und weiß nun, dass $email_header als vierter Parameter übergeben wird.

          Und siehe da, die Zeichen werden korrekt dargestellt.

          Danke für eure Hilfe... und Geduld. :-)

          Ich wünsche noch einen schönen Abend!
          Mariane

  3. Hi,

    Im Kontaktformular werden Umlaute (öüä) korrekt dargestellt, in der versendeten E-Mail werden die Sonderzeichen falsch dargestellt. (ÀöÌ).

    wie meine Vorredner schon feststellten: Nicht übereinstimmende Zeichencodierungen. Die Mailnachricht wird anscheinend in UTF-8 erstellt, aber als ISO-8859-x interpretiert.

    In den Header der index.html schreibe ich
    <meta charset="utf-8" />
    oder auch
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    und die Datei speichere ich mit UltraEdit im UTF-8-Format.

    Das ist schön - nur hat es nichts mit den verschickten Mails zu tun. Dir fehlt offenbar die Angabe der Zeichencodierung im Mail-Header.

    Ciao,
     Martin

    --
    Eine Neandertaler-Sippe sitzt in ihrer kalten Höhle. Seufzt der Stammesälteste: "Hoffentlich erfindet bald jemand das Feuer!"
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(