[MySQL 4.1] Sonderzeichen bei Import von DBF in mysql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.1] Sonderzeichen bei Import von DBF in mysql

    Hallo,
    also folgendes Phänomen. Ich Hole mir aus dem Inet ne zip gepackte DBF.
    Lese sie mit einem Script aus und importiere diese in eine mysql 4.1 er DB. Nur die Sonderzeichen bekomme ich nicht richtig. Ich habe nun verschiedene Charsets probiert. Was mach ich da falsch.


    Gruss und Danke, Mat

  • #2
    Stell sicher dass die Daten, die du einschiebst enstsprechende Kollation / Charset haben

    MySQL 4.1 ist da recht tricky

    Evtl per php die Daten erst konvertieren, hängt natürlich vom Zeichensatz aus, der bei den DBF-DS vorliegt...
    chansel0049
    ----------------------------------------------------
    if you've reached the bottomline - dig further!
    Übersetzer gesucht? http://www.babelport.com

    Kommentar


    • #3
      Wie kann ich denn die Daten per PHP konvertieren ?
      Das einzigste was mir eingefallen ist diese per replace umzumodeln.
      Aber das ist mit Sicherheit nicht der Stein der Weisen..Die DB ist UTF8, beim collate habe ich schon CP, latin und UTF probiert doch immer die falschen Zeichen *grmpf*
      Der Kern des Problems liegt wohl darin das die DBF Datei von einem Windows System kommt.

      Kommentar


      • #4
        Schau mal dies an : http://dev.mysql.com/doc/mysql/en/charset-defaults.html

        Bei 4.1 gibt es Collation / Char set für die DB, für die Tabellen, und für die Felder, das alles sollte zueinander passen...


        und auch das kann helfen , besonders die Comments ...
        http://de3.php.net/utf8_encode
        chansel0049
        ----------------------------------------------------
        if you've reached the bottomline - dig further!
        Übersetzer gesucht? http://www.babelport.com

        Kommentar


        • #5
          Ersmal vielen Dank für die Tipps...Aber ich bekomme es definitiv nicht gebacken.
          Also utf_encode kann man ja scheinbar nicht verwenden für CP Charsets.
          Dann habe ich mal die Funktion cp1252_to_utf8 benutzt. Leider auch ohne erfolg. Also es wird zwar konvertiert. Aber in der mysql DB steht immer noch Schrott anstatt die Sonderzeichen. Ich kann auch tun was ich will ich bekomme die Sonderzeichen nicht mehr zurück( also convertierung der Tabelle in andere Charsets). In meiner Verzweilfung bin ich sogar hingegangen und habe nach UTF8 kodiert und dann nach latin1 ^^ Natürlich genauso erfolglos. äöüß ...Da ist irgendwie nixs zu machen

          Kommentar


          • #6
            Nutze mal mysqladmin oder SQL um die Variablen anzuzeigen

            PHP-Code:
            show variables like "%char%"
            und schaumal welche default werte für datenbank, tabelle, entsprechende felder eingestellt sind..

            mit Phpmyadmin sollten enstprechende Infos auch für die Felder der Tabelle sichtbar sein

            Was steht denn da überall so drin?
            chansel0049
            ----------------------------------------------------
            if you've reached the bottomline - dig further!
            Übersetzer gesucht? http://www.babelport.com

            Kommentar


            • #7
              Ümm poste doch mal bitte einen Auszug aus dem DBF.

              Wie wurde die Datei denn eigentlich gezipt, wie entzipst du sie?

              Kommentar


              • #8
                character_set_client utf8
                character_set_connection utf8
                character_set_database utf8
                character_set_results utf8
                character_set_server latin1
                character_set_system utf8

                Auszug
                018Z023 11354 DYMO LW LABELS SMALL
                LabelWriter Dymo Vielzweck Etiketten, 57 mm x 32 mm, weiá, wiederablsbar, 1000 Etikett
                en

                Datei wird mit unzip dbf.zip entpackt.

                Ich habe nun auch versuche mit mbstring gemacht. Wieder erfolglos.

                Kommentar


                • #9
                  Wirklich "wiederablsbar"? Wo nix is, kann auch nix konvertiert werden. Oder hat das Forum was gefressen?

                  Das "weiá" wird zu "weiß", wenn du von OEM (DOS) nach ANSI konvertierst. Imho gibts keine PHP-Funktion dafür, aber du kannst das File mal mit UltraEdit öffnen und unter Datei - Konvertieren - OEM nach ANSI.

                  Kommentar


                  • #10
                    wiederablsbar ist wohl ein Datenfehler. Aber für die Qualität der Daten bin ich ja nicht zuständig ^^

                    Es gibt keine möglichkeit über perl oder php eine konvertierung zu machen ? Ich meine es müssten doch noch andere über solch ein Problem stolpern. Wenn deine Aussage stimmt konnten ja meine Versuche nie klappen. Ich bin die ganze Zeit davon ausgegangen es wäre ein CP1252 Charset

                    Kommentar


                    • #11
                      http://www.artemis.dk/php/download.php?dn=convert.php
                      http://www.whitetown.com/dbf2dbf/

                      give it a try

                      Kommentar


                      • #12
                        damit ihr was zu lachen habt..Ich habs.

                        1ter Schritt : Auslesen der dbf und umschreiben in eine csv ( Bitte darauf achten das am Ende der Zeile Dostypisch \r\n steht wegen recode )
                        2ter Schritt : Mit Hilfe von recode die csv nach latin1 konvertieren
                        (recode scheitert an der dbf wahrscheinlich wegen steuerzeichen die in der dbf sind.Ausserdem musste ich auf exec("recode") umsteigen da recode in meinem php nicht einkompiliert ist )
                        3ter Schritt : Import der Daten in mysql ^^

                        Das wars *g*

                        Kommentar


                        • #13
                          Danke für das convert.php..Das ist natürlich schneller und eleganter.
                          Aber wen man recode in php hat ist das wohl dann die allerganteste Methode. Hab nur keine Lust extra nochmal neu zu kompilieren.

                          Kommentar

                          Lädt...
                          X