PHP – fgetcsv() Bug

Hallo liebe „nohostname.de Tech-Stuff“ Freunde,

Mir ist da bei einem PHP Importscript folgendes aufgefallen, wenn man mit PHP und fgetcsv eine .csv Datei einliest, bei der am Wortanfang ein Umlaut vorkommt und wo die einzelnen Datensätze nicht von Anführungszeichen eingeschlossen sind, lässt PHP einfach die Umlaute weg. Wenn das csv Format so aussieht:

Ümlautwort, anderer Datensatz

Das macht dann aus dem Wort „Ümlautwort“ das Wort „mlautwort“. Da kann man natürlich seine Daten vergessen.

Als Bugfix habe ich die CSV mit Python auseinandergefriemelt (http://docs.python.org/library/csv.html kann das nämlich!). Und dann in dem Format: 

"Ümlautwort", "anderer Datensatz"

neu geschrieben, danach konnte fgetcsv auch die Umlaute importieren.

Mrz 24th, 2009 | Posted in Programmieren
Tags: , ,
  1. Mrz 24th, 2009 at 18:43 | #1

    Also hat das Umschließen der Werte mit Anführungszeichen die Lösung gebraucht? Oder war das Encoding der Datei einfach nur kaputt?

  2. Matthias
    Jul 21st, 2009 at 13:42 | #2

    Alternativ das Skript mit richtiger Angabe bzgl. der locale-Settings starten:

    setlocale(LC_ALL, 'en_US');

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>