micho: Zeichsatzproblem bei import nach mysql

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

  1. 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.)

    1. 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

      1. 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 :-(

        1. 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

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. 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.

            1. 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

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday