Bonjour,

Je dois extraire les données d'un fichier .CSV généré par un logiciel propriétaire.
Le script ci-dessous fonctionne à la condition que le fichier .csv soit encodé en UTF-8 ou en ANSI. Malheureusement, le fichier généré est encodé en UCS-2 et mon script ne renvoie aucun résultat.

Comment imposer l'encodage de caractères à utiliser ?
(ou à la rigueur, comment convertir le fichier avant utilisation?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
FILE *fpFile;
char buffer[100];
char *token;
char c1[10], c2[10], c3[12], c4[10], c5[10];
int nCol,nLigne;
 
fpFile = fopen("fichier.csv", "r" ); //ouverture du fichier en lecture
 
nLigne = 1; // initialisation du n° de ligne
while (fgets (buffer, 100 , fpFile)) // Lecture d'une ligne du fichier
{
	printf("| Lecture de la ligne %d: ", nLigne);	
	nCol = 1; // initialisation du n° de colonne
 
	// Rechercher les valeurs dans les colonnes
	token = strtok(buffer,","); // Lecture de la premiere colonne
	while(token != NULL) {
		switch(nCol){ // Affectation de la valeur du token à la colonne
			case 1:	sprintf(c1,"%s",token);	break;
			case 2: sprintf(c2,"%s",token); break;
			case 3: sprintf(c3,"%s",token); break;
			case 4: sprintf(c4,"%s",token); break;
			case 5: sprintf(c5,"%s",token); break;
		} //switch							
		token = strtok(NULL,","); // lecture de la colonne suivante
		nCol++; //Incrémente le N° de colonne
	}//while colonne
	printf("; Nb colonnes lues = %d\r\n",nCol-1);
 
	/*                                   */
	/*    Traitement des données lues    */
	/*                                   */
 
	nLigne++; //Passage à la ligne suivante
} //while

Merci pour votre lumière !
Mikael.



Un peu de contexte: Je développe une interface de supervision industrielle avec le Progiciel WinCC Professional V16 de Siemens. Le script ci-dessous est exécuté par WinCC. Le Fichier CSV est généré par le logiciel de gestion de stock Movex et est déposé quotidiennement sur mon serveur. Je n'ai pas ma main sur ce fichier et dois l'exploiter tel quel.