CSV Datei lesen - ÿþ - und jede Menge Leerzeichen werden gelesen

Hallo

lese schon seit mind. August 2013 mit folgenden Befehlern erfolgreich eine CSV Datei ein, die ich dann entsprechend weiter verarbeite:


$SMA_CSV_DATEI_LINK = "C:\	mp\\PV-Nest-20140221.csv";
$csv_datei = fopen($SMA_CSV_DATEI_LINK, "r");
while (!feof($csv_datei))
   {
      $buffer = fgets($csv_datei);
      echo"Buffer=".$buffer."
";
     //do something ...............
  }

Inhalt der CSV Datei: (auf csv.txt umbennant - sonst nicht hochladbar!)

sep=;
Version CSV1|Tool SE|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3

;SN: 3000000;SN: 300000000011
;STP 8000TL-20;STP 8000TL-20
;30333221;3000000001
;Gesamtertrag;Leistung
;Counter;Analog
dd.MM.yyyy HH:mm:ss;kWh;kW
21.02.2014 00:00:00;3261,263;0,000
21.02.2014 00:05:00;3261,263;0,000
21.02.2014 00:10:00;3261,263;0,000
21.02.2014 00:15:00;3261,263;0,000
21.02.2014 00:20:00;3261,263;0,000
21.02.2014 15:05:00;3284,034;2,508
21.02.2014 15:10:00;3284,243;2,508
21.02.2014 15:15:00;3284,445;2,424
21.02.2014 23:50:00;3284,979;0,000
21.02.2014 23:55:00;3284,979;0,000

Inhalt der Datei wird in IPS aber seit Mitte Februar so angezeigt:
Screen.JPG

mit jeder Menge Leerzeichen zwischen den einzelnen Zeichen und als reste Zeichen immer
ÿþ - die Zeichen danach sind vorerst nicht sichtbar erst wenn ich mit dem Cursor markiere werden sie sichtbar und bleiben es dann auch wenn ich die Markierung wieder wegklicke.

Wo hab ich hier plötzlich das Problem? Problem hängt möglicherweise mit der IPS Umstellung bei mir auf 3.1 zusammen - kann das stimmen. Die Datei wird von SMA Photovoltaik Software generiert und auch die alten Versionen vom letzten Jahr - die bis Februar problemlos verarbeitet wurden konnten, können nun nicht mehr richtig gelesen werden.

Wer kann mir hier helfen? In welcher Richtugn muss ich suchen?
Danke
LG
Rudi

PV-Nest-20140221.csv.txt (1.2 KB)

Hallo,

ich stand vor dem gleichen Problem…SMA hat plötzlich das Encoding für die CSV-Exporte geändert.

Um das Problem zu „umgehen“ ändere vorher im Script das encoding von UCS-2LE auf UTF8:


 $file = mb_convert_encoding($file, "UTF-8", "UCS-2LE");

Gruß
Daniel

Hallo,

das löst wahrscheinlich nicht euer Problem, aber warum nehmt ihr nicht „fgetcsv“?

Schöne Grüße
Thomas

Hallo,

ich hab dann doch noch was zum Thema, file info gibt die Datei als folgendes aus:
Little-endian UTF-16 Unicode text, with CRLF, CR line terminators

Schöne Grüße
Thomas

Hallo Danke für die Hinweise - wollte gerade folgendes probieren

Jetzt bekomm ich :

Fatal error: Call to undefined function mb_convert_encoding() in [!Div Tests\FileRead] on line 34

Ist das keine Standard PHP Funktion? - Muss ich die Funktion deklarieren?
Gruß
Rudi

Hallo
bekomm mein Problem auch mit „fgetcsv“ nicht gelöst - wird einfach nicht sauber gelesen!

LG
Rudi

Hallo,

wollte mal fragen ob es schon eine Lösung für das Problem gibt, denn ich habe genau das gleiche Problem bei mir.

Hallo,

ich dachte das Thema währe schon erledigt.

Na dann probiert:

while (!feof($csv_datei))
   {
      $buffer = fgets($csv_datei);
      $buffer = mb_convert_encoding($buffer, "UTF-8", "UTF-16");
      $buffer = trim($buffer);
      echo"Buffer=".$buffer."
";
  }
fclose($csv_datei);

Meine Ausgabe:

Buffer=sep=;
Buffer=Version CSV1|Tool SE|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3
Buffer=
Buffer=;SN: 3000000;SN: 300000000011
Buffer=;STP 8000TL-20;STP 8000TL-20
Buffer=;30333221;3000000001
Buffer=;Gesamtertrag;Leistung
Buffer=;Counter;Analog
Buffer=dd.MM.yyyy HH:mm:ss;kWh;kW
Buffer=21.02.2014 00:00:00;3261,263;0,000
Buffer=21.02.2014 00:05:00;3261,263;0,000
Buffer=21.02.2014 00:10:00;3261,263;0,000
Buffer=21.02.2014 00:15:00;3261,263;0,000
Buffer=21.02.2014 00:20:00;3261,263;0,000
Buffer=21.02.2014 15:05:00;3284,034;2,508
Buffer=21.02.2014 15:10:00;3284,243;2,508
Buffer=21.02.2014 15:15:00;3284,445;2,424
Buffer=21.02.2014 23:50:00;3284,979;0,000
Buffer=21.02.2014 23:55:00;3284,979;0,000
Buffer=

Schöne Grüße
Thomas

Danke für die schnelle Antwort, funktioniert wunderbar

Sent from my iPhone using Tapatalk

Hi bartjaysimpson,

kannst du mal dein fertiges Script zum auslesen des Zählerstandes Posten. Hänge Grade am gleichen Problem und komme nicht weiter.

Vielen Dank für deine Unterstützung im Voraus.

Gruß Stephan