Zeichsatzproblem bei import nach mysql
micho
- datenbank
HAllo,
habe schon diverse threads zum Thema hier gelesen, komme aber nicht weiter.
Ich habe aus einer mysqldb unter windows mit db-zeichesatz: utf-8 ein dumpfile exportiert.
Das dumpfile ist utf-8 kodiert.
beim Importieren in eine ebenfalls utf-8 kodierte mysql-DB unter linux verwurschtelt es mir die Umlaute.
dem Import macht ich mit:
mysql -uUSER -pGEHEIM $DATENBANK < DUMPFILE.sql
muss ich dem mysql-kommandozeilenclient auch irgendwie sagen, dass er eine utf-8 kodierte datei zum fressen bekommt, wie geht das oder mache ich was anderes falsch.
Danke Micho
Versuch mal den Dump in Notepad zu öffnen und als Unicode abzuspeichern und die Datei dann in Linux zu importieren. In Notepad kannst du gleich kontrollieren, ob die Sonderzeichen da noch "gut" aussehen. Wenn nicht, fehlt dem Dump evtl. der Utf-8-Header. Dann kannst du versuchen, die Datei explizit als UTF-8 zu öffnen und dann zu speichern.
(Keine Ahnung, ob das so funktioniert.)
Versuch mal den Dump in Notepad zu öffnen und als Unicode abzuspeichern und die Datei dann in Linux zu importieren. In Notepad kannst du gleich kontrollieren, ob die Sonderzeichen da noch "gut" aussehen. Wenn nicht, fehlt dem Dump evtl. der Utf-8-Header. Dann kannst du versuchen, die Datei explizit als UTF-8 zu öffnen und dann zu speichern.
(Keine Ahnung, ob das so funktioniert.)
Hi,
die datei liegt als utf-8 (ohne header) vor. z.B. Vi erkennt das auch.
Ich probier´s mal mit header
Danke an die Helfer.
Die Lösung war, mysql durch:default_character_set=utf8 zu sagen, dass es utf-8 zu verarbeiten bekommt.
P.S. ich habe testweise dem dumpfile auch nen utf-8 heaer verpasst, das mochte mysql (ohne obige Option nicht - Abbruch mit Fehler) gar nicht :-(
Hello,
P.S. ich habe testweise dem dumpfile auch nen utf-8 heaer verpasst, das mochte mysql (ohne obige Option nicht - Abbruch mit Fehler) gar nicht :-(
Wie sah der denn aus?
Hast Du einen für HTTP-Kontext benutzt oder den richtigen für MySQL-Kontext?
set character set default;
oder
set character set utf8;
http://dev.mysql.com/doc/refman/5.1/de/set-option.html
Mit show character set;
kannst Du abfragen, welche sie DB kennt.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
P.S. ich habe testweise dem dumpfile auch nen utf-8 heaer verpasst, das mochte mysql (ohne obige Option nicht - Abbruch mit Fehler) gar nicht :-(
Wie sah der denn aus?
ne, ich habe ein utf-8 codiertes file mit BOM (das war mit header gemeint) erzeugt.
Hello,
P.S. ich habe testweise dem dumpfile auch nen utf-8 heaer verpasst, das mochte mysql (ohne obige Option nicht - Abbruch mit Fehler) gar nicht :-(
Wie sah der denn aus?
ne, ich habe ein utf-8 codiertes file mit BOM (das war mit header gemeint) erzeugt.
Das mag MySQL ja ganz besonder gerne. PHP bisher übrigens auch.
Wie ich aber irgendwo aufgeschnappt habe, soll das in Zukunft nicht mehr stören.
Muss ich mal genauer hinhören demnächst...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo micho,
muss ich dem mysql-kommandozeilenclient auch irgendwie sagen, dass er eine utf-8 kodierte datei zum fressen bekommt
versuch es mal mit --default_character_set=utf8
Viele Grüße
Stefan