Kodierungsproblem

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

  • Kodierungsproblem

    Hallo!

    Ich habe ein Problem mit der Kodierung von Sonderzeichen, die über ein Formular eingegeben werden und dann in die Datenbank geschrieben werden. In der Datenbank landet nur Müll (bspw wird 'ü' zu 'ü'). Ich habe die Datenbank und alle Tabellen auf utf8_general_ci gestellt. In der php.ini habe ich default_charset auf utf8 gestellt und an den Browser sende ich header ("Content-Type: text/html;charset=utf-8"); .

    So langsam gehen mir die Ideen aus, woran es noch liegen könnte. Die Zeichen kommen in php richtig an. Daher muss es wohl an der php-mysql-Verbindung liegen. Gerade habe ich noch rausgefunden, dass mysql_client_encoding latin1 zurückgibt. Ich nehme an, dass es daran liegt. Wie kann ich das umstellen? mysql_set_charset ist bei mir leider nicht verfügbar...

  • #2
    SET NAMES

    Kommentar


    • #3
      Hmmm... Das wär ja auch zu schön gewesen! Muss ich das bei jeder Query mitschicken oder sollte das eigentlich direkt nach dem Öffnen der Verbindung reichen? Wenn ja, dann funktioniert das nämlich offensichtlich leider nicht.

      Kommentar


      • #4
        Auf eine Oder-Frage kann man nicht mit "Ja" antworten. Aber letzteres ist normalerweise der Fall.

        Kommentar


        • #5
          OK, das geht scheinbar doch. Hatte nicht direkt in die DB geschaut, sondern nur die Ausgabe gesehen. Komisch. Wenn ich die Werte in der DB manuell ändere, dann werden die Sachen richtig ausgegeben. Wenn die Daten übers Formular eingebe, dann werden die zwar im phpMyAdmin richtig angezeigt, aber nicht richtig ausgegeben...

          Kommentar


          • #6
            OK. Und auch das, was ich jetzt gesagt hab stimmt nicht :-( ... Jetzt landen die Sachen zwar alle richtig in der DB, werden aber falsch ausgegeben...

            Kommentar


            • #7
              Dann hast du beim Auslesen noch was falsch eingestellt...

              Kommentar


              • #8
                Hmmm... Was muss ich denn da überhaupt einstellen. Meines Wissens nach regelt SET NAMES den gesamten mysql-php-Verkehr. Und ansonsten ist PHP per default auf utf-8 gestellt und dem Browser sag ichs auch per header! Da gibts doch eigentlich nichts mehr einzustellen, oder?

                Kommentar


                • #9
                  Überprüf alle relevanten Stellen, dann wirst du die falsche Einstellung finden. Ins blaue hineinraten macht wenig sinn, zumal du dich nach der ersten Antwort hier kaum länger als 5 Minuten selbst um dein Problem gekümmert hast.

                  Kommentar


                  • #10
                    Ja, ja... Du hast ja recht. Das ist nur ein ziemlich umfangreiches Projekt und ich hab ein bisschen dagen angesehen, alles durchzuschauen. Vor allem, da ich ja gar nicht genau wusste, wonach ich suchen sollte.

                    Hab den Übeltäter aber inzwischen gefunden. Ich lese die Daten aus der Datenbank, wandle sie in einen JSON-String um, der dann per Ajax geladen und browserseitig weiterverarbeitet wird. Offensichtlich hatte ich das Kodierungsproblem schon bei der Entwicklung auf meinem lokalen Testserver und bin hab das damals etwas schlampig mit htmlentities umgangen. Das hab ich jetzt rausgenommen und siehe da: Es geht!

                    Danke für eure Hilfe!

                    Kommentar

                    Lädt...
                    X