2012-03-28 10 views
1

Wenn ich aus einer CSV-Datei mit fgetcsv Methode liest, entfernt es "Å" und "Ø", wenn sie am Anfang der Zeichenfolge sind.PHP 5.3: fgetcsv und fehlende Buchstaben

while (($data = fgetcsv($handle, 0, "\t")) !== FALSE) { 
     echo $data[0]."<br />"; 
} 

nehmen meine csv nur eine Zeile ÅbyÅÅÅÅhøjÅ enthält, ist der Ausgang byÅÅÅÅhøjÅ (Anmerkung Fehlen der „A“ am Anfang)

irgendwelche Ideen?

+0

Vielleicht über das beobachtete.‘: Http://php.net/manual/ de/function.fgetcsv.php: "Die Gebietsschemaeinstellung wird von dieser Funktion berücksichtigt. Wenn LANG z.B. en_US.UTF-8, Dateien in Ein-Byte-Kodierung werden von dieser Funktion falsch gelesen. " – Akarun

Antwort

0

I-Eingang in Anführungszeichen nur eingewickelt haben - jetzt immer erste Zeichen für Strings wird Encoding ‚von Dateien und PHP-Skript“

3

Vom documentation of fgetcsv:

HINWEIS

Locale Einstellung wird berücksichtigt, indem diese Funktion übernommen. Wenn LANG z.B. en_US.UTF-8, Dateien in Ein-Byte-Codierung werden von dieser -Funktion falsch gelesen.

Das bedeutet, dass Sie die Codierung Ihrer Zeichenfolge an Ihre Gebietsschemaeinstellung anpassen müssen (oder umgekehrt). Es gibt auch eine bug report on bugs.php.net über die inkonsistente Behandlung von unerwarteten Zeichen in der Eingabezeichenfolge.

+0

Nur eine Randnotiz: Wir haben so viele Probleme mit PHPs CSV-Behandlung bekommen, dass wir unseren eigenen CSV-Parser geschrieben haben. – soulmerge

+0

Haha, genau was Ich sage in meinem Kommentar. – Akarun