[encodage caractère] lire fichier .csv UCS-2
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:
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.