Marcus Gräfe: MySQL 4.1: Problem mit Zeichensatz

Ich hatte eine MySQL 4.0 Datenbank, welche ein Forum beinhaltete. Das Default-Charset war "latin1_swedish_ci". Diese Datenbank habe ich über phpMyAdmin exportiert und dann in eine MySQL 5.0 Datenbank importiert. Dort war der Zeichensatz plötzlich "latin1_german2_ci". Es funktionierte aber noch alles. Nun möchte ich diese Datenbank wieder exportieren und in eine MySQL 4.1 Datenbank importieren. Nur sind dann sämtliche Sonderzeichen durch seltsame Zeichen ersetzt. Wie muss ich exportieren/importieren, damit das ganze klappt? Ich importiere über bigdump.php".

  1. Du kannst auch über phpMyAdmin importieren und vor allem exportieren. Dort wird der passende Zeichensatz automatisch erkannt bzw. richtig umgewandelt.

    1. Exportieren ist klar, das habe ich ja zweimal gemacht. Aber Importieren geht nicht, da die SQL Datei zu groß ist (5 MB mit GZip Komprimierung).

      1. Hat sich erledigt!

  2. echo $begrüßung;

    Ich hatte eine MySQL 4.0 Datenbank, welche ein Forum beinhaltete. Das Default-Charset war "latin1_swedish_ci".

    Diese Angabe existierte in Version 4.0 noch nicht, aber sie entspricht der dortigen Default-Einstellung.

    Diese Datenbank habe ich über phpMyAdmin exportiert und dann in eine MySQL 5.0 Datenbank importiert. Dort war der Zeichensatz plötzlich "latin1_german2_ci".

    Das macht gar nichts. Diese Angaben setzen sich aus den Teil Kodierung/Zeichensatz, Kollation (Sortierung) und dem ci für case insensitive zusammen. Wichtig ist nur die richtige Kodierung, denn die sagt aus, wie die Bytes/Bytefolgen zu interpretieren sind. Die Kollation kommt erst bei Vergleichen zur Anwendung, wenn bereits feststeht, dass die Bytefolge XY dem Zeichen Z entspricht.

    Es funktionierte aber noch alles. Nun möchte ich diese Datenbank wieder exportieren und in eine MySQL 4.1 Datenbank importieren.

    Beim Arbeiten ab Version 4.1 solltest du versuchen, immer eine charset-Angabe explizit anzugeben, damit du ein definiertes Ergebnis bekommst. Der phpMyAdmin hat keine (oder nicht immer eine) Möglichkeit zur Angabe beim Export. Bei meinen Versuchen kam immer UTF-8 raus, was ja auch sinnvoll ist.

    Nur sind dann sämtliche Sonderzeichen durch seltsame Zeichen ersetzt.

    Achte auf die richtige Kodierungsangabe. Wenn du dir nicht sicher bist, in welche Kodierung die Daten in einer Datei vorliegen, öffne sie im Browser und probier unter Ansicht->(Zeichen)kodierung mindestens UTF-8, ISO-8859-1 und Win1252 aus. Wenn die Zeichen aus deiner Sicht richtig angezeigt werden, kannst du praktisch davon ausgehen, dass es sich um die eingestellte Kodierung handelt.

    Wie muss ich exportieren/importieren, damit das ganze klappt? Ich importiere über bigdump.php.

    Wer oder was ist bigdump.php? Wenn die Datei zu groß wird, und die konfigurierten Begrenzungen der PHP-Installation überschreitet, bleibt dir nur die Kommandozeile oder das Aufteilen der Datei in kleinere Stücke.

    echo "$verabschiedung $name";

    1. Vielen Dank, habe es dank deiner Tipps hinbekommen!