fgetcsv () suelta caracteres con signos diacríticos (es decir, no ASCII): ¿cómo solucionarlos?

Preguntas similares:
Algunos caracteres en el archivo CSV no se leen durante PHP fgetcsv () ,
fgetcsv () ignora los caracteres especiales cuando están al comienzo de la línea

Mi aplicación tiene un formulario donde los usuarios pueden cargar un archivo CSV (sus 5 usuarios internos siempre han cargado un archivo válido, delimitado por comas, entre comillas, los registros terminan por LF), y el archivo se importa a una base de datos usando PHP:

$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
}

Por razones que no puedo cambiar, los usuarios están cargando el archivo codificado enWindows-1250 charset: una codificación de caracteres de 8 bits de un solo byte.

El problema: yalgunos (¡no todos!) los caracteres más allá de 127 ("ASCII extendido") se sueltan enfgetcsv(). Datos de ejemplo:

"15","Ústav"
"420","Špičák"
"7","Tmaň"

se convierte

Array (
  0 => 15
  1 => "stav"
)
Array (
  0 => 420
  1 => "pičák"
)
Array (
  0 => 7
  1 => "Tma"
)

(Tenga en cuenta queč se mantiene, peroÚ se deja caer)

La documentación parafgetcsv dice que "desde 4.3.5 fgetcsv () ahora es binario seguro", pero parece que no lo es. ¿Estoy haciendo algo mal, o esta función está rota y debería buscar una forma diferente de analizar CSV?

Respuestas a la pregunta(1)

Su respuesta a la pregunta