Bonjour,
J'ai un souci de lecture à partir d'un fichier codé en UNICODE. Je suis sous MS Visual C++ 6.0. Projet : Win32 Console Application.
Lorsque la ligne lue dans le fichier est : toto
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 int TraitementFichierCSVFromDAT(char* szCheminFichierCSV, char* szNomFichierCSV, Vecteur_Ligne_CSV_From_DAT & VecteurDonneesCSVFromDAT) { char szChaineLue[100]; FILE* FichierCSV; //Ouvrir le fichier CSV sprintf(szCheminCompletCSV, "%s\\%s", szCheminFichierCSV, szNomFichierCSV); FichierCSV = fopen(szCheminCompletCSV, "r"); if (FichierCSV != NULL) { while (!feof(FichierCSV)) { //Lire une ligne du fichier fgets(szChaineLue, 100, FichierCSV ); ...
j'obtiens dans szChaineLue : 0 116 0 111 0 116 0 111 0 0
au lieu de : 116 111 116 111 0
Ma chaîne est donc inexploitable, il me faudrait la convertir.
J'ai essayé :
-de bidouiller avec _T() et _TEXT()
http://www.cplusplus.com/forum/windows/1081/
le compilateur ne reconnait pas ces fonctions, j'ai pourtant inclus tchar.h
-de déclarer szChaineLue en wchar_t et d'utiliser fgetws au lieu de fgets, le résultat est strictement le même Pourtant, quand j'écris :
szChaineLue2 contient bien 116 111 116 111 0 et "toto" s'affiche dans la console
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 wchar_t szChaineLue2[100]; wcscpy(szChaineLue2, L"toto"); wprintf(L"%s\n", szChaineLue2);
-de regarder dans les settings du projet car j'ai lu sur internet qu'il y'avait une option pour l'unicode mais je ne l'ai pas trouvée (option absente dans VC++ 6.0 ? )
-d'utiliser les fonctions décrites ici : MultiByteToWideChar et WideCharToMultiByte mais je bloque un peu sur leur utilisation.
szChaineLue4 n'est jamais modifiée. Que faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 wchar_t szChaineLue2[100]; char szChaineLue4[100]; fgetws(szChaineLue2, LONGEUR_CHAINE, FichierCSV ); int m = WideCharToMultiByte (CP_UTF8, WC_COMPOSITECHECK, szChaineLue2, 100, szChaineLue4, 100, NULL, NULL);
Est-ce bien là la solution à tous mes problèmes d'Unicode? Comment faire?
J'ai passé toute la journée d'hier à patauger, j'ai vraiment besoin d'aide.
Merci d'avance.
Partager