fgetcsv () löscht Zeichen mit diakritischen Zeichen (d. h. Nicht-ASCII-Zeichen
Ähnliche Fragen:
Einige Zeichen in der CSV-Datei werden in PHP nicht gelesen. Fgetcsv () ,
fgetcsv () ignoriert Sonderzeichen am Anfang der Zeile
Meine Anwendung hat ein Formular, in das die Benutzer eine CSV-Datei hochladen können (die 5 internen Benutzer haben immer eine gültige Datei hochgeladen - durch Kommas getrennt, in Anführungszeichen gesetzt, Datensätze enden mit LF), und die Datei wird dann mit PHP in eine Datenbank importiert:
$fhandle = fopen($uploaded_file,'r');
while($row = fgetcsv($fhandle, 0, ',', '"', '\\')) {
print_r($row);
// further code not relevant as the data is already corrupt at this point
}
Aus Gründen, die ich nicht ändern kann, laden die Benutzer die im @ codierte Datei hocWindows-1250
charset - eine Einzelbyte-8-Bit-Zeichenkodierung.
Das Problem: undetwa (nicht alle!) Zeichen jenseits von 127 ("erweitertes ASCII") werden in @ gelöscfgetcsv()
. Beispieldaten:
"15","Ústav"
"420","Špičák"
"7","Tmaň"
wir
Array (
0 => 15
1 => "stav"
)
Array (
0 => 420
1 => "pičák"
)
Array (
0 => 7
1 => "Tma"
)
(Beachten Sie, dassč
wird beibehalten, aberÚ
ist gefallen
Die Dokumentation für fgetcsv sagt, dass "seit 4.3.5 fgetcsv () jetzt binär sicher ist", aber es sieht so aus, als ob es nicht so ist. Mache ich etwas falsch oder ist diese Funktion defekt und ich sollte nach einer anderen Methode suchen, um CSV zu analysieren?