Lecture d'un fichier Unicode
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.
Code:
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 );
... |
Lorsque la ligne lue dans le fichier est : toto
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 :
Code:
1 2 3
| wchar_t szChaineLue2[100];
wcscpy(szChaineLue2, L"toto");
wprintf(L"%s\n", szChaineLue2); |
szChaineLue2 contient bien 116 111 116 111 0 et "toto" s'affiche dans la console
-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.
Code:
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); |
szChaineLue4 n'est jamais modifiée. :( Que faire?
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.