HanSolo: Umlaute in Webseite werden falsch angezeigt

Hallo,

hab die Webseite meiner Firma auf Typo3 erstellt. Zunächst hab ich sie auf meinem eigenen Webspace erstellt. Heute hab ich dann Typo3 auch auf dem Webspace meiner Firma installiert und dort dann das Backup von meinem eigenen Webspace eingespielt. Plötzlich werden alle Umlaute nichtmehr richtig angezeigt.

Bin mir jetzt unsicher wo ich nach dem Fehler suchen muss? In der Datenbank, in Typo3 selbst oder sonst wo?

Wäre super, wenn ihr mir helfen würdet. Hier noch der Link zu der Seite die die Probleme mit den Umlauten macht:

Umlaute werden falsch angezeigt

  1. Bin mir jetzt unsicher wo ich nach dem Fehler suchen muss? In der Datenbank, in Typo3 selbst oder sonst wo?

    Ich tippe auf die Datenbank, wenn du an TYPO3 nichts geändert hast.

    Wäre super, wenn ihr mir helfen würdet. Hier noch der Link zu der Seite die die Probleme mit den Umlauten macht:

    Vermutlich die falsche Zeichenkodierung beim Zurückspielen (wie hast du das gemacht?) des Datenbankdumps gewählt.

    1. Ich tippe auf die Datenbank, wenn du an TYPO3 nichts geändert hast.

      Naja, was heißt nichts geändert, habe es ja komplett neu bei dem anderen Hoster aufspielen müssen. Wo kann ich denn überprüfen, ob ich Typo3 richtig hinsichtlich UTF eingestellt habe?

      Was die Datenbank angeht, die hat meine Hoster erstellt und mir die entsprechenden Zugangsdaten zukommen lassen. Was ich momentan habe sind die Zugangsdaten zur Datenbank und das phpmyadmin-Tool. Kann ich irgendwie mit dem phpmyadmin-Tool prüfen, ob die Datenbank auf UTF steht?

      Wie kann ich denn die Datenbank mit phpmyadmin auf UTF umstellen, falls diese falsch eingestellt ist?

      Vermutlich die falsche Zeichenkodierung beim Zurückspielen (wie hast du das gemacht?) des Datenbankdumps gewählt.

      Mmmm hab garkein Datenbankdump erstellt, bin einfach nur hergegangen und habe mir mein Typo3-Projekt in eine .t3d-Datei exportiert. Diese hab ich dann anschließend bei der neuen Typo3 Installation importiert.

      1. Ich tippe auf die Datenbank, wenn du an TYPO3 nichts geändert hast.

        Naja, was heißt nichts geändert, habe es ja komplett neu bei dem anderen Hoster aufspielen müssen. Wo kann ich denn überprüfen, ob ich Typo3 richtig hinsichtlich UTF eingestellt habe?

        Was heisst "komplett neu aufspielen"? Die FTP-Daten vom alten Host runter und beim neunen Host rauf oder eine frische Installation?

        Wie kann ich denn die Datenbank mit phpmyadmin auf UTF umstellen, falls diese falsch eingestellt ist?

        Weiss ich auf den Schlag nicht - aber mit ALTER TABLE und CONVERT TO CHARACTER SET gehts manuell.

        Mmmm hab garkein Datenbankdump erstellt, bin einfach nur hergegangen und habe mir mein Typo3-Projekt in eine .t3d-Datei exportiert. Diese hab ich dann anschließend bei der neuen Typo3 Installation importiert.

        .t3d-Files sind entsprechend der TYPO3-Einstellung beschaffen und sollten eigentlich immer funktionieren.

        Wenn du die Daten beim alten Hoster noch hast, mach das idealerweise nochmal neu.

        Daten per SCP/SFTP/FTP auf den neuen Server verschieben (Rechte beachten), Datenbank dumpen und wieder einlesen (geht per Commandline, mit phpMyAdmin oder z.B. mit MySQL Administrator).

        1. Was heisst "komplett neu aufspielen"? Die FTP-Daten vom alten Host runter und beim neunen Host rauf oder eine frische Installation?

          Ich hab eine komplett neue Installation bei neuen Hoster gemacht. Hab garnicht so weit gedacht, einfach nur das ganze ftp-Verzeichnis rüber zu kopieren.

          Wenn du die Daten beim alten Hoster noch hast, mach das idealerweise nochmal neu.

          Kann ich leider nicht, da so einige Dinge nach dem Import der .t3d-Datei nicht funktioniert haben. Das hab ich jetzt alles schon beim neuen Hoster angepasst.

        2. Wie kann ich denn die Datenbank mit phpmyadmin auf UTF umstellen, falls diese falsch eingestellt ist?

          Weiss ich auf den Schlag nicht - aber mit ALTER TABLE und CONVERT TO CHARACTER SET gehts manuell.

          MySQL Administrator).

          Ohje ich hab überhaupt keine Ahnung von SQL. Stell mir das jetzt so vor.

          • auf phpmyadmin zugreifen
          • dann irgendwie alter <rekursiv alle Tabellen> convert to character set UTF8

          muss ich zum manuellen Ausführen dieser Zeile phpmyadmin benutzen?

          wo in phpmyadmin kann ich den kram den manuell eingaben, hab noch nie damit gearbeitet.

          wie sieht denn die richtige Syntax aus?

          Bin grade total überfordert.

          1. Hi!

            Ohje ich hab überhaupt keine Ahnung von SQL. Stell mir das jetzt so vor.

            • auf phpmyadmin zugreifen
            • dann irgendwie alter <rekursiv alle Tabellen> convert to character set UTF8

            Mit phpMyAdmin geht nichts rekursiv. Es gibt auch kein Statement, das rekursiv alle Felder umstellt. Auf die kommt es nämlich letzlich an, nicht auf die Einstellung der Tabelle und auch nicht die der Datenbank.

            Das korrekte Einstellen der Felder ist aber nur die halbe Miete. Zwischen Client und MySQL muss auch die zu verwendende Kodierung ausgehandelt werden, ansonsten wird ein im DBMS eingestellter Default-Wert verwendet, der meist auf Latin1 steht. Dieses Aushandeln muss nach jeder Verbindungseröffnung passieren (mysql(i)_set_charset() oder SET NAMES). Wenn du die Stelle in TYPO3 nicht findest, an der man das konfigurieren kann, so das überhaupt vorgesehen ist (ich weiß von TYPO3 nur wie man den Namen schreibt), dann bleibt dir nur, den Defaultwert in der Konfiguration des MySQL-Servers umzustellen. Das wird aber kein Provider mitmachen, wenn er dir den MySQL-Server nicht exklusiv zur Verfügung stellt.

            wo in phpmyadmin kann ich den kram den manuell eingaben, hab noch nie damit gearbeitet.

            In der Konfiguration der Felder, da wo du jedem Feld Angaben wie Name und Typ einstellen kannst.

            Lo!

            1. [...] so das überhaupt vorgesehen ist [...]

              Ist es - eine suche im Archiv nach Beiträgen von HanSolo wird sicher irgenwo eine Antwort zutage führen, wo sogar erklärt wird, wie das genau gemacht wird :)

          2. muss ich zum manuellen Ausführen dieser Zeile phpmyadmin benutzen?

            Nein, das geht per Commandline oder mit einem beliebigen anderen Tool auf - MySQL Front oder MySQL Administrator z.B. aber phpMyAdmin ist hier sehr solide.

            wo in phpmyadmin kann ich den kram den manuell eingaben, hab noch nie damit gearbeitet.

            Irgendwo gibts einen Reiter der simpel SQL heisst.

            wie sieht denn die richtige Syntax aus?

            ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

            Und das mit jeder Tabelle.

            Die wahrscheinlich einfachste Variante ist per SHOW TABLES alle Tabellen auflisten und dann die ALTER-TABLE-Zeilen in einem Texteditor vorbereiten und dann gemeinsam über phpMyAdmin auszuführen.

            btw: das ist alles ohne Gewähr - mach (oder lass machen) vorher auf jeden ein Backup.

            Das bloße konvertieren der Datenbank ist ggf. unsinn wenn die Daten falsch kodiert in der Datenbank stehen oder wenn TYPO3 dafür sorgt, dass sie falsch kodiert werden aber trotzdem als UTF-8 ausgeliefert werden (localconf.php SET NAMES bei der Datenbankverbindung nicht vergessen).

        3. Ich tippe auf die Datenbank, wenn du an TYPO3 nichts geändert hast.

          So jetzt klappt es. Hab den ursprünglichen TypoScript-Code:

          page = PAGE
          page {
            config {
              renderCharset = utf8
            }
          }

          durch diesen ersetzt:

          page = PAGE
          page {
            config {
              renderCharset = iso-8859-1
            }
          }

          Mmmm, ihr habt mir doch mal gesagt, dass man UTF8 verwenden sollte. Hab mein Hoster gerade angerufen. Der sagte mir, dass die DB auf Latin1 steht und das ich UTF durch iso-8859-1 ersetzen soll. Er meinte UTF8 würde man für deutsche Zeichen nicht verwenden, ich sollte dementsprechend auf iso-8859-1 umstellen.

          Mmmm was ist denn nun richtig? UTF8 oder iso-8859-1

          1. Mmmm, ihr habt mir doch mal gesagt, dass man UTF8 verwenden sollte. Hab mein Hoster gerade angerufen. Der sagte mir, dass die DB auf Latin1 steht und das ich UTF durch iso-8859-1 ersetzen soll. Er meinte UTF8 würde man für deutsche Zeichen nicht verwenden, ich sollte dementsprechend auf iso-8859-1 umstellen.

            Nach dieser Aussage (ohne den genauen Kontext zu kennen): wechsle den Hoster :)

            Mmmm was ist denn nun richtig? UTF8 oder iso-8859-1

            ISO-8859-1 hat einen Vorrat von 256 Zeichen - davon sind ein paar unbelegt bzw. reine Steuerzeichen. Da bekommt man zwar alle Schhriftzeichen, die in der Deutschen Sprache relevant sind, unter - sind nicht grade viele - aber spätestens mit Zeichen wie dem Euro-Zeichen scheitert man.

            Der Einzig wirklich gute Grund für ISO-8859-1 ist: man muss auf den Speicherplatz achten und hat dadurch einen signifikaten Vorteil. In der Praxis kommt das heutzutage aber sogut wie nicht mehr vor.

            1. @@suit:

              nuqneH

              Nach dieser Aussage (ohne den genauen Kontext zu kennen): wechsle den Hoster :)

              War auch mein erster Gedanke. ;-)

              ISO-8859-1 hat einen Vorrat von 256 Zeichen […] Da bekommt man zwar alle Schhriftzeichen, die in der Deutschen Sprache relevant sind, unter

              Nein. Auch Anführungszeichen, Gedankenstriche usw. sind in der deutschen Sprache relevant.

              Mit windows-1252 ist man da schon besser dran. Was jetzt kein Empfehlung dafür sein soll.

              Qapla'

              --
              Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          2. Hab mein Hoster gerade angerufen. Der sagte mir, dass die DB auf Latin1 steht und das ich UTF durch iso-8859-1 ersetzen soll. Er meinte UTF8 würde man für deutsche Zeichen nicht verwenden, ich sollte dementsprechend auf iso-8859-1 umstellen.

            Dann frag ihn doch bitte mal, ob er "die DB" für dein nächstes USA Projekt bitte auf ASCII "stellen" kann. *SCNR*

            Mmmm was ist denn nun richtig? UTF8 oder iso-8859-1

            Nicht richtig oder falsch. Zukunftsfähig, bzw. für den aktuellen Fall ausreichend.

          3. Hi!

            Mmmm, ihr habt mir doch mal gesagt, dass man UTF8 verwenden sollte.

            Sollte man, wenn man "nicht nur Umlaute" verwenden will. Schon beim Euro-Zeichen lässt dich nämlich ISO-8859-1 im Prinzip im Stich. Das existiert darin nicht. Dass du es vermutlich trotzdem verwenden kannst, liegt daran, dass es in Windows-1252 enthalten ist, das auf ISO-8859-1 basiert. MySQLs Latin1 entspricht übrigens auch Windows-1252. Und alle Browser haben bisher immer als ISO-8859-1 deklariertes Windows-1252 wie letzteres interpretiert.

            Hab mein Hoster gerade angerufen. Der sagte mir, dass die DB auf Latin1 steht und das ich UTF durch iso-8859-1 ersetzen soll.

            Vemutlich meint er den Server-Default-Wert, nach dem sich alle anderen 8 unterschiedlichen Arten von charset-Werten richten, wenn man sie nicht explizit einstellt.

            Mmmm was ist denn nun richtig? UTF8 oder iso-8859-1

            Richtig ist das was du brauchst. Nur westeuropäische Zeichen (und davon auch nicht mal alle) oder praktisch alle Zeichen dieser Welt.

            Lo!

      2. hi,

        [..] Kann ich irgendwie mit dem phpmyadmin-Tool prüfen, ob die Datenbank auf UTF steht?

        ??

        Wie kann ich denn die Datenbank mit phpmyadmin auf UTF umstellen, falls diese falsch eingestellt ist?

        ??

        Prüfe doch erst einmal, in welcher Codierung die Zeichen in der DB vorliegen bevor Du zu phpMyAdmin greifst. Auf meiner Seite (siehe Link) hab ich beschrieben, wie Du das machen kannst.

        Hotti

        1. Hi!

          Prüfe doch erst einmal, in welcher Codierung die Zeichen in der DB vorliegen bevor Du zu phpMyAdmin greifst.

          Der phpMyAdmin ist doch schon perfekt, um zu prüfen, ob Konfiguration der Felder mit den darin liegenden Daten übereinstimmt. Wenn der PMA sie richtig anzeigt, ist üblicherweise im DBMS selbst alles richtig. Wenn er Mist anzeigt, hat man ein Problem. Welches das ist, und wie man das löst, kommt darauf an, was genau zu sehen ist.

          Man kann den Inhalt der MySQL-Tabellen nicht ansehen, und damit nicht überprüfen, wenn man ihn nicht abfragt. Zum Abfragen benötigt man eine sauber konfigurierte Verbindung zwischen dem Client und dem DBMS, sprich: eine mit ausgehandelter Kodierung. Diese sollte UTF-8 sein, damit nicht beim MySQL-internen Umkodieren zwischen der eingestellte Feldkodierung und der auf der Verbindung verwendeten ein umkodierbedingter Zeichenverlust (mit der Verbindungskodierung kann ein bestimmtes Zeichen nicht dargestellt werden) oder eine Zeichenverfälschung auftritt (als Latin1 dargestellte UTF-8-Zeichen). All das kann eine aktuelle Version des PMA bereits in seiner Grundkonfiguration.

          Lo!

  2. hi,

    Bin mir jetzt unsicher wo ich nach dem Fehler suchen muss? In der Datenbank, in Typo3 selbst oder sonst wo?

    Den Header hab ich mir schonmal angeschaut, da steht UTF-8

    Den Rest musst du Dir selbst erarbeiten:
    http://rolfrost.de/utf8.html

    Hotti

    1. @@hotti:

      nuqneH

      http://rolfrost.de/utf8.html

      Die Fehler darin hast du noch nicht berichtigt?

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)