fgetcsv() ignore les caractères spéciaux lorsqu'ils sont au début de la ligne!

J'ai un script simple qui accepte un fichier CSV et lit chaque ligne dans un tableau. J'ai ensuite parcourir chaque colonne de la première ligne (dans mon cas, il détient les questions d'une enquête) et j'ai l'impression. L'enquête est en français et chaque fois que le premier caractère d'une question est un caractère spécial (é,ê,ç, etc) fgetcsv simplement omet.

De caractères spéciaux dans le milieu de la valeur ne sont pas affectés uniquement lorsqu'ils sont le premier caractère.

J'ai essayé de déboguer cela, mais je suis perplexe. J'ai fait un var_dump avec le contenu du fichier et les personnages sont bel et bien là:

var_dump(utf8_encode(file_get_contents($_FILES['csv_file']['tmp_name'])));

Et voici mon code:

if(file_exists($_FILES['csv_file']['tmp_name']) && $csv = fopen($_FILES['csv_file']['tmp_name'], "r"))
    {
        $csv_arr = array();

        //Populate an array with all the cells of the CSV file
        while(!feof($csv))
        {
            $csv_arr[] = fgetcsv($csv);
        }

        //Close the file, no longer needed
        fclose($csv);

        //This should cycle through the cells of the first row (questions)
        foreach($csv_arr[0] as $question)
        {
            echo utf8_encode($question) . "<br />";
        }

    }
fgetcsv() n'est binaire-sûr, si vous utilisez ASCII - en d'autres termes, pas du tout. Voir stackoverflow.com/questions/3637770/... - fondamentalement, il faut utiliser fgets() pour lire les données, puis analyser CSV à l'aide d'une fonction personnalisée. Apparemment, cela fonctionne aussi: stackoverflow.com/questions/1472886/...

OriginalL'auteur Gazillion | 2010-02-10