sika11: MySql Verbindung - Problem mit Umlauten

Hallo,

ich habe eine MySql Datenbank mit dem Charset: utf8-general_ci.
Auf diese Datenbank greife ich zu mit einer Seite die folgenden Header hat:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">.

Jetzt werden die Umlaute immer falsch dargestellt:
? statt ü
? statt ö
...

kann mir irgendjemand weiterhelfen, wieso werden die Umlaute nicht richtig dargestellt?

Danke, sika

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

    Hi,

    hast Du:

    1. schonmal im DB-Backend nachgesehen, ob die Umlaute dort bereits fehlerhaft gespeichert sind?
    2. Dein Script angewiesen, die Daten in utf-8 einzutragen/anzufordern? (mysql_set_charset)

    Grüße, Günni

    1. Hi,

      1. schonmal im DB-Backend nachgesehen, ob die Umlaute dort bereits fehlerhaft gespeichert sind?

      über phpMyAdmin stehen Daten ok aus. Und wenn ich diese auf einer anderen Seite ausgeben sehen die Daten auch ok aus.

      1. Dein Script angewiesen, die Daten in utf-8 einzutragen/anzufordern? (mysql_set_charset)

      ich mache beim Upload ein: utf8_decode() ist das nicht das selbe?

      Danke

      1. Hi ich habe gerade festgestellt das die Table: latin1_swedish_ci codiert ist.
        Keine Ahnung warum, kann man dies einfach umwandeln?

        1. Hi ich habe gerade festgestellt das die Table: latin1_swedish_ci codiert ist.

          Wenn Du von der Kollation sprichst, hat die wenig mit der Codierung zu tun.
          Dabei geht es  nur um die Sortierreihenfolge. Sie entsprechend Deiner Codierung zu verwenden, ist sicher sinnvoll, sie hat aber mit Deinem Umlautproblem nichts zu tun.

          Gruß, Günni

          1. Hi!

            Hi ich habe gerade festgestellt das die Table: latin1_swedish_ci codiert ist.

            Die Tabelleneinstellung ist nicht wichtig, es zählen nur die Konfigurationen der einzelnen Felder.

            Wenn Du von der Kollation sprichst, hat die wenig mit der Codierung zu tun.

            Die Kollation ist von der Kodierung abhängig. Der erste Teil des Kollationsnamen gibt immer die Kodierung an.

            Lo!

            1. Danke schon wieder etwas gelernt ;)

              Wenn ich aber die Felder anschaue in der Tabelle haben diese auch den Wert: latin1_swedish_ci und nicht wie gewünscht utf8_general_ci.

              Kann ich dann einfach die Felder ändern? Wenn ja gib es eine Möglichkeit das für die gesamte Tabelle zu tun?

              Danke

              1. Hi!

                Wenn ich aber die Felder anschaue in der Tabelle haben diese auch den Wert: latin1_swedish_ci und nicht wie gewünscht utf8_general_ci.
                Kann ich dann einfach die Felder ändern?

                Wenn der Inhalt zur Konfiguration passt, dann ja. Er passt üblicherweise, wenn der phpMyAdmin alles richtig anzeigen kann.

                Wenn ja gib es eine Möglichkeit das für die gesamte Tabelle zu tun?

                Ja, mit einem ALTER TABLE. Da gibt es Varianten für das Ändern einzelner Felder aber auch eine für alle Felder einer Tabelle. Du findest das im MySQL-Handbuch beschrieben, im Kapitel zur SQL Statement Syntax und dort weiter bei Data Definition Statements.

                Lo!

                1. Hi also ich habe die Tabellenfelder auf: utf8_general_ci geändert.
                  Aber an der Ausgaben in meinem HTML-File welches auch als  charset=UTF-8 gecodet ist hat sich an der Darstellung der Werte nichts geändert?

                  1. Ich habe gerade die Lösung gefunden ich musste auch noch mysql_set_charset('utf8',$verbindung) setzen.

                    Vielen Dank für euere Hilfe,
                    Sika11

                    1. Hi!

                      Ich habe gerade die Lösung gefunden ich musste auch noch mysql_set_charset('utf8',$verbindung) setzen.

                      Ja, haben wir auch schon ein paar Mal erwähnt, dass man das braucht. Bist du den Links gefolgt und hast nun verstanden, warum man das benötigt?

                      Lo!

                      1. Ja Danke ;)

      2. ich mache beim Upload ein: utf8_decode() ist das nicht das selbe?

        Hi,

        was nützt es, wenn Du Deinem Server nicht mitteilst, in welchem Encoding Du sie ihm schickst?

        Stell es Dir in Sprachen vor:

        Wenn Du mit jemandem sprichst, solltet Ihr Euch auf eine gemeinsame Sprache einigen. Vorher Deinen Text zu übersetzen bringt da erstmal wenig. Dein Zuhörer (Server) sollte wissen, in welcher Sprache Du ihn ansprichst.

        Weiß er anscheinend ja sogar. Aber dann sollte er auch wissen, in welcher Sprache er Dich ansprechen soll, wenn Du (Dein Script) ihn etwas fragt.
        Es muß also alles(!) auf dem Weg der Verständigung einheitlich in einer Sprache ablaufen. (in Deinem Fall "utf-8)

        Gruß, Günni

        1. Hi Danke logisch irgendwie das es alles die selbe Sprache sein muss.
          Aber wie kann ich dies bewerbstelligen?

          HTML file kann ich codieren.
          Wie kann ich den IN- und OUT-Put sowie die DB codieren?

          1. Hi!

            Aber wie kann ich dies bewerbstelligen?
            Wie kann ich den IN- und OUT-Put sowie die DB codieren?

            Folge den Links in meiner erster Antwort. Es nützt dir nicht viel, mal hier und mal da was zu korrigieren, der Datenaustausch muss von Grund auf und zwischen allen Beteiligten korrekt ablaufen - lückenlos.

            Lo!

      3. Hi!

        1. schonmal im DB-Backend nachgesehen, ob die Umlaute dort bereits fehlerhaft gespeichert sind?
          über phpMyAdmin stehen Daten ok aus.

        Dann sind meist die Daten unversehrt, was schon viel wert ist.

        Und wenn ich diese auf einer anderen Seite ausgeben sehen die Daten auch ok aus.

        Da können sich auch Fehler eingeschlichen haben. Manchmal heben sich zwei gegenseitig auf. Die Aussage ist, abgesehen vom zu geringen Informationsgehalt, nicht weiter entscheidend.

        1. Dein Script angewiesen, die Daten in utf-8 einzutragen/anzufordern? (mysql_set_charset)
          ich mache beim Upload ein: utf8_decode() ist das nicht das selbe?

        Nein. Die Fragestellung ist auch nicht richtig. mysql_set_charset() weist MySQL an, auf der aktuellen Client-Verbindung die ankommenden Daten als in einer bestimmten Kodierung zu interpretieren und sie auch so wieder auszuliefern.

        Lo!

  2. Hi!

    ich habe eine MySql Datenbank mit dem Charset: utf8-general_ci.
    Auf diese Datenbank greife ich zu mit einer Seite die folgenden Header hat:
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">.

    Das ist HTML, das kann nicht auf die Daten zugreifen. Vielmehr ist da noch PHP dazwischen, das mit dem DBMS kommuniziert und das HTML als Ausgabe erstellt. Ich hab da mal was vorbereitet: SELFHTML-Wiki Themenkomplex Zeichenkodierung, für dein Problem konkret Zeichencodierung/MySQL. Der Rest ist sicher auch nicht uninteressant.

    Jetzt werden die Umlaute immer falsch dargestellt:
    ? statt ü
    ? statt ö
    ...

    Fragezeichen oder Fragezeichen im auf der Spitze stehenden Kästchen?

    kann mir irgendjemand weiterhelfen, wieso werden die Umlaute nicht richtig dargestellt?

    Weil die Kodierung(sangaben) nicht übereinstimmen.

    Lo!