Zeichensatzproblem bei eMails

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #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.

    Kommentar


    • #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...

      Kommentar


      • #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.

        Kommentar


        • #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!!

          Kommentar


          • #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.

            Kommentar


            • #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?
              Zuletzt geändert von h3ll; 20.03.2013, 22:35.

              Kommentar


              • #22
                Zitat von h3ll Beitrag anzeigen
                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
                */ 
                Zuletzt geändert von Melewo; 21.03.2013, 00:33.

                Kommentar


                • #23
                  Zitat von freakgesicht Beitrag anzeigen
                  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>"

                  Kommentar


                  • #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!

                    Kommentar

                    Lädt...
                    X