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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage