Es macht durchaus Sinn einen SQL-Dump mit den aktuellen Daten der MySQL Datenbank zu erstellen. Dabei wird des Dump als Textdatei abgespechert. Beim Abspeichern kann es passieren, dass Umlaute ÖÄÜ oder ß verloren gehen bzw. nach dem erneuten Einspielen in die Datenbank falsch dargestellt werden.
Wenn man zudem den SQL-Dump mit einem Editor wie Scite bearbeitet kann es zu diesen o.g. Effekten kommen. Abhängig von der Collation (UTF-8 / utf8) der MySQL Datenbank (ab MYSQL Version 4.1 Standardmäßig zu vergeben), gehen die Informationen für die Sonderzeichen bzw. Umlaute bei zurückspielen verloren.
WICHTIG: Die Basis für die Skripte, sei es Python oder PHP, sollte sein, dass deren Encoding bei Abarbeitung des Skripts auf UTF-8 steht, damit der beschriebene Weg auch funktioniert.
Bei Python im Kopf der Applikation:
- -- coding: utf-8 --
Bei PHP in einer der ersten Zeilen:
(das klappt nut mit PHP5, da es diese Befehle in PHP4 nicht gibt !!!)
<?PHP
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
mb_http_input("UTF-8");
...
↑ Lösung bzw. Workaround #
Ich habe mich dazu entschieden alle meine Datenbanken bzw. Tabellen in der Datenbank mit der Collation (utf8_unicode_ci) zu speichern. Da es sich um Unicode handelt kann man seine Web Seiten bzw. Projekte später problemlos nationalisieren (mit anderen Landessprachen ausstatten). Dabei wird das Produkt dann Mehrsprachig ohne dabei die Umlaute / Sonderzeichen der einzelnen Länder zu vernachlässigen.
Folgenden Workaround habe ich mir für das Bearbeiten eines SQL-Dumps ausgedacht:Bearbeiten des Dumps mit Scite mit der Einstellung über das Menü (File->Encoding->UTF-8).
Dann kann man alle Sonderzeichen bzw. Umlaute so sehen wie sie in der Landessprache sein sollen also Beispiel Deutsch: ÖÄÜßVor den Abspeichern der Datei dann das Encoding über das Menü auf (File->Encoding->8-Bit) umstellen. Dann sieht man die Umlaute bzw. Sonderzeichen als zwei Steuerzeichen (sieht ein wenig kaputt aus). Aber nicht verwirren lassen, das ist so in Ordnung !
Dann Abspeichern !!!
SQL-Dump Datei wieder in die Datenbank einspielen per PHPMyAdmin. In den Reitern oben (SQL->Durchsuchen) und die Datei auswählen.
Zeichenkodierung der Datei etwas weiter unten auf (utf8) stellen und mit Ok den Import starten.
Wenn der Import fertig ist sollten die Sonderzeichen / Umlaute von der Web Applikation richtig anzezeigt werden.