Zeichensatzproblem bei eMails

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Hast du jetzt schon überprüft, ob die Daten wirklich korrekt in der Datenbank stehen? Für mich sieht es so aus, als wurde Zeichenmüll gespeichert.

    Comment


    • #17
      Ja, also wenn ich mir den Eintrag des Codes in Phpmyadmin ansehe, wird alles korrekt dargestellt...

      Soweit dürfte also der Code richtig abgespeichert sein...

      Comment


      • #18
        Dann weiß ich auch nicht weiter. Wenn du trotz dem Verbindungszeichensatz latin1 Daten in UTF-8 aus der Datenbank bekommst, kann es eigentlich nur an den Daten in der Datenbank liegen.

        Comment


        • #19
          Ich werde morgen testen, welchen Zeichensatz die Variable hat, die dann in die Datenbank gespeichert wird - also VOR dem Eintrag.
          Falls bereits diese UTF8 enthält - kann ich diesen mittels utf8_decode() in latin1 umwandeln? Oder weißt du, welcher Befehl dann passen würde?

          Ich möchte mich jedenfalls jetzt schon herzlich für deine Hilfe und Zeit bedanken!!

          Comment


          • #20
            Gerade probiert, dieses Ergebnis
            Code:
            test: latin1
            encoding: UTF-8
            erhalte ich auch mit
            PHP Code:
            echo "test: ",mysql_client_encoding(),"<br>";
            echo 
            "encoding: ",mb_detect_encoding($text),"<br>"
            und dennoch wird alles richtig mit
            HTML Code:
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            dargestellt. Somit kann es daran eigentlich nicht liegen.

            Comment


            • #21
              Der Browser interessiert sich nicht für den Meta-Tag. Da kannst du reinschreiben, was du willst. Wichtig ist welcher Zeichensatz im HTTP-Header angegeben ist.

              PHP Code:
              header('Content-Type: text/html; charset=ISO-8859-1'); 
              Du kannst dir im Browser übrigens auch anzeigen lassen, welche Zeichenkodierung er wirklich verwendet. Schon mal gemacht?
              Last edited by h3ll; 20-03-2013, 22:35.

              Comment


              • #22
                Originally posted by h3ll View Post
                Du kannst dir im Browser übrigens auch anzeigen lassen, welche Zeichenkodierung er wirklich verwendet.
                Ja, ich gebe es trotzdem immer an, da es bei älteren Browsern nicht unbedingt in jedem Fall funktionierte.

                Der dritte Parameter macht erst den Unterschied, da dann strict.
                Mit dem dritten Parameter true lässt sich überprüfen, ob es wahr ist oder nicht!
                Die vorletzte Zeile ergibt false, weil es mit strict "streng genommen" kein UTF-8 ist, sondern ISO-8859-1.
                PHP Code:
                echo "test: ",mysql_client_encoding(),"<br>";               // test: latin1
                echo mb_detect_encoding($text)."<br>";                      // UTF-8
                echo mb_detect_encoding($text"UTF-8")."<br>";             // UTF-8
                echo mb_detect_encoding($text"iso-8859-1")."<br>";        // ISO-8859-1
                echo mb_detect_encoding($text"UTF-8"true)."<br>";       //
                echo mb_detect_encoding($text"iso-8859-1",true)."<br>";   // ISO-8859-1 
                Geht auch so:
                PHP Code:
                echo "test: ",mysql_client_encoding(),"<br>";
                echo 
                mb_detect_encoding($text"UTF-8, UTF-7, ASCII, iso-8859-1, iso-8859-15"true)."<br>";

                /* Ausgabe:

                test: latin1
                ISO-8859-1
                */ 
                Last edited by Melewo; 21-03-2013, 00:33.

                Comment


                • #23
                  Originally posted by freakgesicht View Post
                  PHP Code:
                  echo "encoding: ",mb_detect_encoding($message),"<br>"
                  Wie gesagt bekomme ich als Ergebnis:
                  test: latin1
                  encoding: UTF-8
                  Ändere mal die Zeile in:
                  PHP Code:
                  function CODING($string) {

                      
                  $zeichen = array(

                      
                  "UTF-8""UTF-7""ASCII""iso-8859-1""iso-8859-2",
                      
                  "iso-8859-2""iso-8859-4""iso-8859-5""iso-8859-6"
                      
                  "iso-8859-7""iso-8859-8""iso-8859-9""iso-8859-10" 
                       
                  );

                      return 
                  mb_detect_encoding($string$zeichentrue);
                  }

                  echo 
                  "encoding: ".CODING($message)."<br>"

                  Comment


                  • #24
                    Hallo Melewo, hallo h3ll!

                    Da ich massiv Zeitdruck wegen meines Scripts habe, entschied ich mich nun für den einfach Workaround des reinen Text-Mails. Da funktioniert alles problemlos. Ich versende den Text nun mit UTF-8 im Mailheader.

                    Bitte fasst das nicht als Geringschätzung eurer Hilfsbereitschaft auf, aber ich bin einfach nur froh, dass zumindest damit alles funktioniert.

                    Sobald ich wieder ein bisschen mehr Zeit habe, werde ich eure Vorschläge gerne prüfen, weil auch mich interessiert es, wo hier mein Fehler liegt.

                    Also nochmals herzlichen Dank an euch, Melewo und h3ll!!! Ihr seid super!

                    Comment

                    Working...
                    X