Umlaute richtig importiren

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

  • Umlaute richtig importiren

    Hallo,
    Ich hoffe ich bin hier im MYSQL Forum richtig.

    Habe mir eine Statistikseite zu einem Spiel gebastelt.
    Die Daten bekomme ich als TXT-Datei vom Spieleserver. In der TXT sind leider alle umlaute falsch codiert.

    Z.B.
    in der TXT:k%C3%A4mpfer+ronny
    Im Spiel: kämpfer ronny

    wie man sieht, ist ä = %C3%A4
    und Leerzeichen = +

    Bisher habe ich mir die Datei auf den Rechner gezogen und durch die Wordfunktion "suchen & ersetzen" bearbeitet und in meine DB hochgeladen.

    Da dies auf Dauer viel Arbeit mit sich bringt, habe ich mir ein php Scrip gebastelt, das ich als Cronjob laufen lassen will. Der Import geht ohne Probleme, allerdings hab ich noch die Probleme mit den Umlauten.

    Gibt es eine Möglichkeit, diese nach/werend dem Import automatisch umzuwandeln?

  • #2
    PHP: urldecode - Manual

    Kommentar


    • #3
      danke
      das mit den + als Leerzeichen hab ich hinbekommen.
      Die geschichte mit den Umlauten will aber leider immer noch nicht.

      Kommentar


      • #4
        Bei der Fehlerbeschreibung kann man nicht helfen.

        Kommentar


        • #5
          Ich ziehe mir eine txt-datei von einem fremden server

          so eine z.B.
          Code:
          556276,Syri,,175,7339,1
          639506,crazyboy220498,7305,2133,3773,1
          352126,[B]k%C3%A4mpfer+ronny[/B],6947,2414,3603,1
          diese TXT-datei ziehe ich mir in meine DB
          Geht auch soweit.

          Wenn du dir jetzt mal den letzten datensatz in meinem beispiel anschaust, steht da:
          352126,k%C3%A4mpfer+ronny,6947,2414,3603,1

          Der datensatz soll in die DB wie folgend eingetragen werden
          352126,kämpfer ronny,6947,2414,3603,1


          mit hilfe deines ersten beitrags bin ich jetzt soweit, das es wie folgend aussieht:
          352126,k%C3%A4mpfer ronny,6947,2414,3603,1


          Ich möchte das automatisch %C3%A4 in Ä umgewandelt wird.

          Kommentar


          • #6
            PHP-Code:
            echo urldecode('k%C3%A4mpfer+ronny');
            // kämpfer ronny 

            Kommentar


            • #7
              Hallo,

              das ist URL-codiertes UTF-8. Wenn deine Datenbank auch auf UTF-8 läuft, funktioniert das auch. Wenn nicht, musst du den String nach urldecode noch in den Zeichensatz der DB umwandeln. Es wäre aber besser, die DB gleich auf UTF-8 einzustellen, alles andere wäre Blödsinn.

              Gruß,

              Amica
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                kämpfer ronny

                so sieht meine ausgabe aus

                Kommentar


                • #9
                  Es muss alles auf UTF-8 gestellt werden. Auch die Ausgabe.

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Hallo,

                    das ist URL-codiertes UTF-8. Wenn deine Datenbank auch auf UTF-8 läuft, funktioniert das auch. Wenn nicht, musst du den String nach urldecode noch in den Zeichensatz der DB umwandeln. Es wäre aber besser, die DB gleich auf UTF-8 einzustellen, alles andere wäre Blödsinn.

                    Gruß,

                    Amica
                    utf8_general_ci ist standart bei mit.
                    Was auf dem Gamesserver läuft kann ich nicht sagen und auch nicht ändern

                    Kommentar


                    • #11
                      PHP: iconv - Manual

                      Kommentar


                      • #12
                        supi

                        jetzt läuft es perfekt.
                        ich danke dir h3ll

                        Kommentar


                        • #13
                          habe doch noch ein problem.
                          wenn ich die Daten über phpmyadmin einlese werden mir alle daten eingelsen.
                          Wenn ich mein script laufen lasse, läst er datensätze aus.
                          Ein timeout vermute ich nicht, da ich es auch mit veruschsweisse mit wenigen datensätzen versucht habe und das gleich ergebniss erhielt.
                          Da ich noch ein anfänger bin, bitte ich euch mal eon blick auf mein code zu werfen.
                          Hab ich wo ein fehler oder könnte es besser machen?

                          PHP-Code:
                          $filearray fopen ("http://de8.grepolis.com/data/players.txt","r"); 
                          while (
                          $data fgetcsv ($filearray",")) {
                          $line fgets($filearray);
                          list(
                          $id$name$alliance_id$points$rank$towns) = explode(','$line);
                          $name1=urldecode($name);

                          $db->query("INSERT INTO players SET id='$id', name='".iconv("UTF-8""ISO-8859-1"$name1)."', alliance_id='$alliance_id', points='$points', rank='$rank', towns='$towns'");

                          }
                          fclose ($filearray);
                              

                          echo 
                          "Alle Player Erfogreich eingetragen"

                          Kommentar


                          • #14
                            Hier fehlt das SQL-Escaping.

                            Warum verwendest du iconv() für Werte, die du in die Datenbank schreibst? Warum nicht einfach die Datenbankverbindung selber auf UTF-8 stellen?

                            Kommentar


                            • #15
                              Zitat von h3ll Beitrag anzeigen
                              Hier fehlt das SQL-Escaping.
                              Komm nicht drauf, wie du das meins.
                              Sorry bin noch anfänger.


                              Zitat von h3ll Beitrag anzeigen
                              Warum verwendest du iconv() für Werte, die du in die Datenbank schreibst? Warum nicht einfach die Datenbankverbindung selber auf UTF-8 stellen?
                              Habe alles auf UTF-8, hat es aber ohne nicht angenommen

                              Kommentar

                              Lädt...
                              X