Bonjour,
J'ai un fichier CSV codé en ANSI.
Je le télécharge dans un $_FILES avec ce code:Et dans un autre fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $_SESSION['importFile'] = []; if(!empty($_FILES['importFile']) and $_FILES['importFile']['error'] != 4 and !empty($_FILES['importFile']['name'])){ $_SESSION['importFile']['csvLines'] = file($_FILES['importFile']['tmp_name']); $_SESSION['importFile']['delimiter'] = getFileDelimiter($_FILES['importFile']['tmp_name'],5); //Check 5 lines to determine the delimiterLe codage n'est pas bon, ce que met en évidence un var_dump($aCSVLines) (ligne 10) qui affiche des points d'interrogation à la place des caractères accentués.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $delimiter = $_SESSION['importFile']['delimiter']; // handle encoding $aCSVLines = $_SESSION['importFile']['csvLines']; $test = substr(implode($delimiter,$aCSVLines),0,10000); // To limit the time of process $code = mb_detect_encoding($test); var_dump($code); // retourne UTF-8 au lieu de ANSI ou ASCII. Pourquoi? if(mb_detect_encoding($code) != "UTF-8") $aCSVLines = mb_convert_encoding($aCSVLines,"UTF-8",$code);
Partager