ValentinS: UTF-8 wird nicht korrekt in mysql gespeichert

Hallo Leute,

ich habe ein Problem, dass es so ähnlich bereits 100 mal gab und ich hab bisher alles versucht was angegeben wird.

Also:

Ich habe meine Seiten und Formulare auf UTF-8 umgestellt,
sowohl per
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
als auch per header();...
genauso habe ich utf-8 in der php.ini eingestellt.
Außerdem habe ich die komplette mysql-Datenbank auf utf8_general_ci eingestellt.
Der Browser zeigt mir auch an, dass UTF-8 Kodierung erkannt wurde.

Wenn ich jetzt ein Formular (meist per AJAX) absende und den REQUEST anzeigen lasse, werden mir die Umlaute korrekt angezeigt, d.h. bei PHP kommt das Richtige an.
Will ich jetzt die Daten per Propel in eine MYSQL-Datenbank speichern, kommt dort ein falsch kodierter Umlaut an. Propel sendet aber den Umlaut korrekt (so nehme ich an...) weil in der propel.log die Umlaute korrekt angezeigt werden wenn ich den log in UTF-8 anzeigen lasse.

Es muss also irgendwie am Insert in die mysql-DB liegen..
Muss man dafür irgendwie getrennt UTF-8 angeben?

  1. Hi,

    Es muss also irgendwie am Insert in die mysql-DB liegen..
    Muss man dafür irgendwie getrennt UTF-8 angeben?

    Hast du auch für die Verbindung mit der Datenbank ausgehandelt, dass UTF-8 verwendet werden soll?
    Andernfalls kodiert MySQL die Daten bei Ein- und Ausgabe selber fröhlich hin und her.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Moin!

      »» Es muss also irgendwie am Insert in die mysql-DB liegen..
      »» Muss man dafür irgendwie getrennt UTF-8 angeben?

      Hast du auch für die Verbindung mit der Datenbank ausgehandelt, dass UTF-8 verwendet werden soll?
      Andernfalls kodiert MySQL die Daten bei Ein- und Ausgabe selber fröhlich hin und her.

      Wenn man Propel nutzt, hat man mit der Connection in der Regel nichts zu tun. Aber es können sich halt leicht an anderer Stelle Codierungsunstimmigkeiten einschleichen.

      - Sven Rautenberg

    2. echo $begrüßung;

      Hast du auch für die Verbindung mit der Datenbank ausgehandelt, dass UTF-8 verwendet werden soll?
      Andernfalls kodiert MySQL die Daten bei Ein- und Ausgabe selber fröhlich hin und her.

      Das fröhliche Hin- und Her-Kodieren macht MySQL auch mit ausgehandelter Verbindungskodierung. MySQL kodiert bei zwischen zwei unterschiedlichen Kodierungen (zum Beispiel Verbindungskodierung ist eine andere als die Feldkodierung) immer um. Das Problem ist meist, dass die Default-Kodierungskonfiguration nicht mit der vom Anwender verwendeten Kodierung übereinstimmt und MySQL dann die Daten gemäß einer anderen Kodierung interpretiert, was in die Hose geht.

      Wenn man keinen Einfluss auf die Datenbank-Abstraktionsschicht hat, hier Propel, sollte man erst einmal prüfen, ob da alles richtig läuft. Dazu kann man sich im MySQL-Server das Query-Log einschalten und dort erst einmal den Verkehr analysieren. Ansonsten wären konkrete Angaben interessant, um konkret zu vermuten, in welcher Weise eine ungewünschte Umkodierung stattfindet. Was also zeigt der phpMyAdmin an?

      echo "$verabschiedung $name";