Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] ftp ascii-datei in utf-8

Einklappen

Neue Werbung 2019

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

  • #16
    Mein Grundproblem ist nicht php, also es ist natürlich nicht einfach etwas über das hochladen (automatisch, binär oder ascii) hier anzuzeigen ... zu 1. mal ein Beispiel:
    ------------------------Originaldatei von einem Garmin-Navi------------------
    GC2W9MM,2013-02-08T09:29Z,Found it,"Avard: GeoSem B10-4688T4TC, Nebbiolo+Poiana"
    GC2RFBB,2013-02-08T09:58Z,Didn't find it,"T4TC, Nebbiolo+Poiana"
    ------------------------auf dem Server mit filezilla hochgeladen --------------
    GC2W9MM,2013-02-08T09:29Z,Found it,"Avard: GeoSem B10-4688T4TC, Nebbiolo+Poiana"
    ਍䜀䌀㌀㈀䔀䈀䬀Ⰰ㈀ ㄀㌀ⴀ ㈀ⴀ 
    GC2RFBB,2013-02-08T09:58Z,Didn't find it,"T4TC, Nebbiolo+Poiana"
    ਍䜀䌀㈀䨀䈀䬀圀Ⰰ㈀ ㄀㌀ⴀ ㈀ⴀ 

    Kommentar


    • #17
      Zum 2.) ich habe nun eine Datei (andere) mit dem Editor geöffnet und unter RTF-8 gespeichert und dann hochgeladen. Dort sieht die Datei dann so aus:
      GC4VZBZ,2014-11-08T08:14Z,Found it,"CAC"..GC49JMA,2014-11-08T08:33Z,Found it,"CCC"..GC5E8XB,2014-11-19T12:42Z,Found it,"BBB B+3785"..

      Deshalb suche ich eine Möglichkeit den am Anfang beschriebenen Ablauf mit PHP zu lösen.

      Kommentar


      • #18
        Einfach nur Daten zu nehmen und zu behaupten "das ist jetzt UTF-8" reicht nicht aus. Sagen wir mal, du hast eine ISO-8859-1 kodierte Datei und dort drin ist ein ü enthalten. Dieses ü wird mit einem einzelnen Byte kodiert und wird nur als ü dargestellt, wenn man das entsprechende Encoding verwendet.
        Stellst du das Encoding nun einfach auf UTF-8 um, erscheint statt des ü ein völlig anderes Zeichen, weil in UTF-8 für das Byte ein ganz anderes Zeichen hinterlegt ist.

        Dieses Verhalten kannst du Live beobachten, wenn du dir z.B. Notepad++ installierst, eine Datei im ISO Encoding anlegst, ein ü hineinspeicherst und dann auf UTF-8 umstellst...

        Das Zauberwort heisst "Konvertierung".
        Schau dir die Funktion iconv() an und informier dich darüber, was ein Encoding ist und wie es funktioniert...
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #19
          Zitat von nebbiolo Beitrag anzeigen
          Mein Grundproblem ist nicht php, also es ist natürlich nicht einfach etwas über das hochladen (automatisch, binär oder ascii) hier anzuzeigen ... zu 1. mal ein Beispiel:[...]
          Das sieht nicht nach einem Zeichensatzproblem aus. Wie schaust du dir die Dateien an? Was passiert wenn du die Datei hochlädst und wieder runter? Häng am besten mal die orginal Datei an (als zip).

          Kommentar


          • #20
            erc hat das Forum kaputt gemacht http://prntscr.com/59kv0m
            [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

            Kommentar


            • #21
              Also ich habe nun mal herausgefunden, dass die Original-Datei UCS-2 LE w/o BOM ist.

              Ich habe auf meiner Webseite kein Meta-tag wo charset definiert ist.
              Wie finde ich nun heraus auf welche Codierung ich umstellen muss (damit Umlaute noch angezeigt werden), und muss ich da die Datei Zeile für Zeile lesen, umcodieren und wieder schreiben?

              Kommentar


              • #22
                Du könntest es mit iconv() versuchen, die Daten nur für die Ausgabe in UTF-8 umzuwandeln. Setzt natürlich voraus, das deine Webseite UTF-8 anzeigen kann...
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #23
                  ich habe nun einiges gelesen über iconv() ... da kann/muss man ja sogar zeichen zur umwandlung angeben ... recht kompliziert ...
                  Wäre ja schön, wenn mir jemand ein Muster-scipt für die Umstellung der Datei posten könnte.

                  Kommentar


                  • #24
                    Nimm die Multibyte Erweiterung (mb_).

                    PHP-Code:
                    $utf8_codierter_inhalt_der_datei mb_convert_encoding$inhalt_der_datei 'UTF-8''UCS-2LE'); 

                    Kommentar


                    • #25
                      Danke erc, der erste Datensatz ist nun ok, aber dann
                      PHP-Code:
                      $inp fopen ("GC/test-datei.txt""r");   // Öffnet die Input-datei
                      $out fopen("GC/test-datei1.txt""w");   // Öffnet die Output-datei
                      while ($inhalt fgets ($inp4096 ))
                        {
                         
                      $inhalt_neu mb_convert_encoding($inhalt,'UTF-8','UCS-2LE');
                         
                      fwrite($out,$inhalt_neu."\r\n");   // Schreibt in die Textdatei
                        
                      }
                      fclose($out);  // Schließt die Output-datei
                      fclose($inp);  // Schließt die Input-datei 
                      GC4M6YC,2014-11-07T08:46Z,Found it,"BBB"

                      䜀䌀㐀䴀夀刀

                      Kommentar


                      • #26
                        leider wurde durch die chinesischen Zeichen etwas "abgeschnitten" ... hier noch der UCS-2LE-Input, wobei die Leerstellen im Editor mit "nul" angezeigt werden.
                        G C 4 M 6 Y C , 2 0 1 4 - 1 1 - 0 7 T 0 8 : 4 6 Z , F o u n d i t , " B B B "

                        G C 4 M Y R X , 2 0 1 4 - 1 1 - 0 7 T 0 8 : 5 2 Z , F o u n d i t , " B B B "

                        Was mache ich da falsch?

                        Kommentar


                        • #27
                          Zitat von nebbiolo Beitrag anzeigen
                          leider wurde durch die chinesischen Zeichen etwas "abgeschnitten" ... hier noch der UCS-2LE-Input, wobei die Leerstellen im Editor mit "nul" angezeigt werden.
                          G C 4 M 6 Y C , 2 0 1 4 - 1 1 - 0 7 T 0 8 : 4 6 Z , F o u n d i t , " B B B "

                          G C 4 M Y R X , 2 0 1 4 - 1 1 - 0 7 T 0 8 : 5 2 Z , F o u n d i t , " B B B "

                          Was mache ich da falsch?
                          Zitat von erc Beitrag anzeigen
                          Das sieht nicht nach einem Zeichensatzproblem aus. Wie schaust du dir die Dateien an? Was passiert wenn du die Datei hochlädst und wieder runter? Häng am besten mal die orginal Datei an (als zip).
                          Entweder ist die Orginaldatei schon korrupt (womit aber dein Editor zurecht kommt) oder sie wird beim upload beschädigt.

                          Kommentar


                          • #28
                            Seit neustem schaue ich mir die Daten mit notepad++ an, deshalb kenn ich ja auch die Codierung

                            geocache_visits_17.zip
                            Angehängte Dateien

                            Kommentar


                            • #29
                              Wo dein Problem liegt ist mir schleierhaft. Ein kurzer Test:
                              PHP-Code:
                              $content file_get_contents('forum/geocache_visits_17.txt');

                              $utf8_codierter_inhalt_der_datei mb_convert_encoding($content 'UTF-8''UCS-2LE');

                              file_put_contents('forum/geocache_visits_17_utf8.txt',$utf8_codierter_inhalt_der_datei); 
                              Das Ergebnis ist eine reine ASCII-Datei ( ASCII ist eine Untermenge von UTF-8 ).

                              Am Rande:
                              Zitat von nebbiolo Beitrag anzeigen
                              ich habe nun einiges gelesen über iconv() ... da kann/muss man ja sogar zeichen zur umwandlung angeben ... recht kompliziert
                              Wo hast du denn das her?
                              iconv() ist genau so einfach handzuhaben wie mb_convert_encoding().

                              Kommentar


                              • #30
                                Mit der Datei ist alles in Ordnung. Scheint so als ob fgets ein Problem hat und beim Zeilenumbruch ein Byte verschluckt. Machs mit fread oder noch einfacher mit file_get_contents/file_put_contents.

                                Kommentar

                                Lädt...
                                X