Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlaute werden falsch dargestellt (Text aus Datenbank)

Einklappen

Neue Werbung 2019

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

  • Umlaute werden falsch dargestellt (Text aus Datenbank)

    Moin,

    ich habe hier eine MySQL-Datenbank deren Stadard-Kollation utf8_general_ci ist (die der Tabellen auch) --> erstmal, ist das überhaupt richtig? Ich nutze HeidiSQL.
    Ich habe in meiner PHP Datei folgendes im header stehen:
    Code:
    <meta charset="utf-8">
    Leider werden jetzt Umlaute von Texten aus der Datenbank nicht richtig dargestellt (da kommt dann diese schwarze raute mit dem fragezeichen drinne).
    Ich habe dann (irgendwo im body) folgendes eingefügt:
    PHP-Code:
    header('Content-Type: text/html; charset=utf-8'); 
    Das hat aber rein garnichts geändert.
    Dann habe ich einfach mal das wieder rausgenommen und die meta-Angabe in:
    Code:
    <meta charset="ISO-8859-1">
    geändert. Jetzt werden auch die Umlaute richtig dargestellt - aber, soll das so? Ich bin mir da nicht sicher!

    Mit dem Thema Zeichensätze kam ich noch nie so gut klar kann mir hier jemand sagen, wie man das sauber einstellt (ich will schon utf8 benutzen, nicht ISO-8859-1 - oder ist das doch besser als UTF-8?)?


    Grüße,
    Ich

    Edit, oh anscheinend hat Dreamweaver beim Umstellen auf ISO-8859-1 alle Umlaute, die ich in festen Texten stehen hatte in die html entities umgewandelt... Ich habs jetzt wieder rückgängig gemacht, nun steht in der meta angabe wieder utf-8 und der header aufruf von php ist auch wieder aktiv (auch wenn der jedenfalls nichts sichtabres ändert) - dabei fällt aber dann auf, dass die umlaute aus festen texten richtig dargestellt werden, nur die aus der Datenbank nicht...
    Also muss ich wohl irgendwas an der Datenbank umstellen - aber was? Ist utf8_general_ci nicht richtig? Ich habe schon ne halbe Ewigkeit gegoogelt aber nichts hat mir wirklich geholfen...


  • #2
    Zitat von Ich2015Ich Beitrag anzeigen
    Dann habe ich einfach mal das wieder rausgenommen und die meta-Angabe in:
    Code:
    <meta charset="ISO-8859-1">
    geändert. Jetzt werden auch die Umlaute richtig dargestellt - aber, soll das so?
    Nein. Das muss so!!

    Kommentar


    • #3
      Ja....
      Soll ich es jetzt mit ISO-8859-1 machen oder was? Und mit utf-8 müsste es doch normalerweise auch gehen, oder nicht?

      Kommentar


      • #4
        Hast du PHPMyAdmin? Check mal ob nicht nur die Datenbank selber, sondern auch wirklich die existierenden Tabellen UTF nutzen. Es kann nämlich sein, dass das nicht so ist. Man kann die Zeichencodierung auf Tabellenebene ändern, also eine Tabelle mit ISO-XYZ und eine mit UTF-Irgendwas haben.

        Kommentar


        • #5
          Zitat von Ich2015Ich Beitrag anzeigen
          MySQL-Datenbank deren Stadard-Kollation utf8_general_ci ist (die der Tabellen auch)

          Kommentar


          • #6
            Wie greifst du in PHP auf dieDB zu mysql_ oder mysqli_ , ... ?

            Schau mal hier: http://php-de.github.io/jumpto/faq/#html-charset

            und hier: http://php-de.github.io/jumpto/mysql-and-utf8/

            LG
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Okay, danke, werde mir das morgen mal anschauen.
              Zugreifen tu ich mit mysqli im Objektorientiertem Stil (also z.B. $mysqli->query() )

              Kommentar


              • #8
                Ich hatte auch mal so einen Fall, da schien auch alles (Script, HTML und MySQL-seitig) UTF-8 zu sein und schlussendlich hat, dann das geholfen:

                PHP-Code:
                $db = new mysqli(...);
                $db->set_charset('utf8'); 
                Findest du auch im #6 erwähnten zweiten Link, letzter Absatz.
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Verbindungszeichensatz setzen und ggf. prüfen, ob in den UTF-8 Collation-Feldern vielleicht schon falsche Zeichensätze eingetragen wurden.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Jo, werd das dann erstmal versuchen, mit dem Verbindungszeichensatz, aber was meinst du @nikosch mit
                    ob in den UTF-8 Collation-Feldern vielleicht schon falsche Zeichensätze eingetragen wurden.
                    ?
                    Ansonsten Danke ich erstmal euch beiden!

                    Kommentar


                    • #11
                      Ach, fast hätte ich's vergessen: Das mit dem Verbindungszeichensatz hat tatsächlich funktioniert!! Das merk ich mir mal für die Zukunft

                      Kommentar


                      • #12
                        Wenn das Problem der Verbindungszeichensatz ist, kann es vorkommen, dass davor eingetragene Daten bereits im falschen Zeichensatz abgespeichert worden sind. Genauer: im falschen Zeichensatz angekommen und dann in den Zielzeichensatz konvertiert wurden mit all seinen hässlichen Seiteneffekten.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Und was kann ich dagegen tun bzw. wie finde ich das raus? Also dagegen tun kann ich wahrscheinlich, den richtigen Zeichensatz in der Datenbank eintragen - aber ich dachte der sei richtig? Also den den ich im ersten post erwähnt habe...

                          Kommentar


                          • #14
                            Die Einstellugn der DB und Felder "sagt der DB" nur, wie sie mit gespeicherten Daten umgehen soll. Im Prinzip bereitet der Zoo den Tigerkäfig vor. Das heißt noch nicht, dass auch ein Tiger geliefert wird.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Da ich auch immer wieder vor diesem Problem stehe nun die Frage:
                              Was muß ich machen damit der "Tiger" richtig geliefert wird/ankommt?

                              lg

                              Kommentar

                              Lädt...
                              X