Announcement

Collapse
No announcement yet.

Zeichensatzprobleme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeichensatzprobleme

    Hallo Leute,

    ich habe mich schon wahrlich totgesucht und doch nichts gescheites gefunden.
    Bitte seid doch so nett und gebt mir Tips, wie ich mein Problem angehen kann.

    Folgende Situation:
    - Webserver Ubuntu 8.04.4 LTS (aktueller Patchlevel)
    - LAMP-Aufbau mit Standard-Ubuntu-Paketen
    - mySQL 5.0.51 (glaube ich)
    - TYPO3-Datenbank mit utf8_general_ci - Kollation (alle Tabellen)
    - Komische Umlaute in der Datenbank: "ü" für "ü", and für das "ä" ist es "ä"


    Beispiel:

    Code:
    Als Referenzen dürfen wir Ihnen an dieser Stelle einige Unternehmen vorstellen, die in den verschiedensten Branchen tätig sind.
    Wie kann ich diese Geschichte in den Griff bekommen, sodass die Umlaute auch wirklich UTF-8-kodiert in der DB stehen?

    Ich bitte euch ganz dringend um Hilfe, ich komme hier überhaupt nicht weiter und klar... sorry...

    Liebe Grüsse,
    Michi

  • #2
    Hallo,
    welche Kodierung verwendet denn die Typo3-Website? Wie kommen die Texte in die DB?

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hi, danke für deine Antwort!

      Es ist alles (schon seit einigen Jahren) auf UTF-8 gestellt. Soll heissen die TYPO3-Installation selber, die entsprechenden TYPO3-Sites, die Designvorlagen, die Tabellen der TYPO3-DB und alles was dazugehört.

      Plötzlich (ohne dass ich etwas geändert habe) funktionieren die ganzen Sites nicht mehr, es gibt die Probleme in der DB und ich habe keine Ahnung, wie ich es ändern kann.

      Das einzige, was geändert wurde ist ein Ubuntu-Update von mySQL. Dazu habe ich hier gefragt, aber keine Antwort erhalten.

      http://forum.ubuntuusers.de/topic/me...auf-webserver/

      LG,
      Michi

      Comment


      • #4
        So wie ich das zur Zeit verstehe würde ich also irgendwie eine Möglichkeit benötigen, die DB zu exportieren und (vielleicht mit iconv ??) so zu konvertieren, dass diese hässlichen Zeichen wie "ö" und "ä" zu vernünftigen Umlauten wie "ö" und "ä" umformatiert werden.

        Ist das ein Ansatz? Der richtige? Wie würde ich so etwas umsetzen können?

        LG,
        Michi

        Comment


        • #5
          Oha. Ich glaube, ich hatte da doch vor einiger Zeit eine Änderung in der /etc/mysql/my.cnf gemacht. Für ein anderes TYPO3-Projekt...

          Als da wäre:


          Code:
          [mysqld]
          #
          # * Basic Settings
          #
          
          character-set-server    = utf8
          default-character-set   = utf8
          collation-server        = utf8_general_ci
          skip-character-set-client-handshake
          So. Nun gehe ich mal davon aus, dass mein Problem mit der Änderung zusammenhängt. Denn davor lief es ja.
          Sorry, dass ich da nicht eher drauf gekommen bin.

          Ist meine obige Idee denn daher richtig?

          LG,
          Michi




          -----------
          EDIT: Habe mal eben testweise die obigen Zeilen in der my.cnf auskommentiert. Schon werden alle Umlaute auf den entsprechenden TYPO3-Websites wieder korrekt angezeigt. Nun bleibt die Frage bestehen, da diese Kodierung ja in der DB so besteht, wie kann ich das halt ändern? Gibt es für sowas ein Skript oder so??
          Zuletzt editiert von jfu72h; 24.02.2010, 15:45.

          Comment


          • #6
            Originally posted by jfu72h View Post
            ..., dass diese hässlichen Zeichen wie "ö" und "ä" zu vernünftigen Umlauten wie "ö" und "ä" umformatiert werden.
            Das ist die UTF-8-Codierung der Daten.

            Also entweder wurde irgendwo doppelt UTF8-Codiert oder es wird jetzt vergessen zu decodieren.

            Comment


            • #7
              Hallo Berndhard,

              auch dir vielen Dank erstmal für deine Antwort.

              Originally posted by Bernhard Geyer View Post
              Das ist die UTF-8-Codierung der Daten.

              Also entweder wurde irgendwo doppelt UTF8-Codiert oder es wird jetzt vergessen zu decodieren.
              Aber wie kann ich dieses Problem denn jetzt in den Griff bekommen?
              Ich stehe glaube ich ziemlich auf Kriegsfuss mit diesen Zeichensatzgeschichten.
              Kann mir jemand helfen, den Kram umzuwandeln?
              Bzw. mir einen Tip für den richtigen Befehl dazu geben?

              LG,
              Michi

              Comment


              • #8
                Vielen Dank für Eure Antworten. Naja war ja fast ein Monolog. Habe es jetzt allerdings hinbekommen. Ein SQL-Export, dann die Zeichen nacheinander über Suchen/Ersatzen mit dem midnight-commander ersetzt und wieder in die DB reingeschrieben. Danke auch an Frank Bültge, der mit seinem Cheat-Sheet eine ordentliche Ersetzungsvorlage erstellt hat: http://bueltge.de/wk-utf-8-konvertierung/

                LG,
                Michi

                Comment


                • #9
                  Hallo jfu72h,

                  Dein Problem hat sich ja nun erledigt, doch ich hatte das selbe "Problem" mit Opensuse, nach einem MySql-Update.
                  Letztendlich hatte ich ein falsches MySql-Paket eingespielt, ein Teilupdate einer neuen Version.
                  Die Lösung war einfach das vorhergehende Paket, also vor dem Update, wieder einspielen und auf Teilupdates zu verzichten.

                  Gruß Franz

                  Comment


                  • #10
                    Hallo Michi,

                    Auf dem Weg von der MySQL-DB zur Webseite gibt es drei Ebenen, zwischen denen jeweils eine Schnittstelle liegt.
                    Die erste Ebene ist die DB selbst, die Zweite die MySQL-Client-Verbindung und die Dritte die Webseite. Die erste Schnittstelle zwischen DB und Client-Verbindung wird von MySQL automatisch behandelt. Sprich wenn du eine utf8 DB und eine latin1 Client-Verbindung hast, führt MySQL hier automatisch eine Umkodierung durch. Die zweite Schnittstelle zwischen der Client-Verbindung und der Website ist PHP, bzw. die PHP-Anwendung. Ist die Client-Verbindung also latin1 und die Website UTF8, dann MUSS die PHP-Anwendung die Umkodierung (z.B. mit iconv() explizit vornehmen, da hier keine Automatik existiert. Systeme wie Typo3 sollten diese Umkodierung eigentlich berücksichtigen (ich kenne Typo3 nicht im Detail, deshalb kann ich es nicht definitiv sagen), so dass in jedem Fall korrekte Daten übertragen werden.

                    Die Änderungen die du in der my.cnf gemacht hast, hatten mit Sicherheit Auswirkungen auf die MySQL-Client-Verbindung und nur auf diese. Ich kann mir deshalb nur vorstellen, dass Typo3 KEINE explizite Konvertierung vornimmt, die Kodierung der Client-Verbindung also nicht beachtet. Für den Fall: UTF8 (Website) - latin1 (Client-Verbindung) - utf8 (DB) landet dann doppelt kodiertes UTF8 in der DB, da das Webseiten-UTF8 nich nach Latin1 gewandelt wird, MySQL aber davon ausgeht dass es Latin1 bekommt und nochmal nach UTF8 kodiert.
                    Auf dem Rückweg passiert das Ganze dann umgekehrt. MySQL wandelt das doppelt kodierte UTF8 nach latin1 - was dann einfach kodiertes UTF8 ist - Typo3 ignoriert dies und liefert es als Website aus, die dann korrekt als UTF8 angezeigt wird. Somit sieht alles gut aus, obwohl es falsch ist. Texte die auf einem anderen - korrekt kodierten - Weg (z.B. über PHPMyAdmin) in die DB gelangen, würden für diesen Fall jedoch "vermurkst" dargestellt werden.
                    Wenn du jetzt die Client-Verbindung auf utf8 umstellst (Änderung der my.cnf), dann werden die "falschen" Zeichen auch falsch - nämlich als doppelt kodiertes UTF8 - dargestellt, da keine automatische Umkodierung mehr stattfindet. Alle neu über die Website eingegebenen Texte müßten jedoch korrekt sein!
                    Die Bereinigung der DB - wie du sie gemacht hast - ist für diesen Fall der einzig richtige Weg.

                    Sorry das ich etwas langatmig ausgeholt habe, aber ich hoffe es trägt etwas zum Verständnis bei.

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment

                    Working...
                    X