Bonjour,
J'ai un fichier CSV codé en ANSI.
Je le télécharge dans un $_FILES avec ce code:
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 delimiter
Et dans un autre fichier:
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);
Le 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.