Bonjour,

J'ai le code suivant ou je récupère du texte dans un fichier encodé en UTF-8 (sans BOM) sur un serveur linux que je transmet ensuite à un logiciel sous Windows avec le framework gSOAP par un fichier cgi.

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
 
int calcService::help(int lang_id, wchar_t **result)
{
  	//setlocale(LC_CTYPE, "");
	FILE *pFile;
	char fileName[100];
        [...]
        pFile = std::fopen (fileName, "r, ccs=<UTF-8>");
	if (pFile == NULL) perror ("Error opening file");
	else
	{
	  	*result = new wchar_t[400];
		int i=0;
		wchar_t line[1000][400];
 
		while(fgetws(line[i], 400, pFile))
		{
			printf("%s", line[i]);
			++i;
		}
 
		std::fclose (pFile);
 
		int line_size = sizeof(line);
		srand(time(0));
		int n = random()%i;
		*result = line[n];
		//*result = L"éàèç";
 
	}
	return SOAP_OK;
}
Le problème est que lorsqu'il y a des accents dans un des textes du fichier, rien ne s'affiche.
J'ai essayé de lire en mode binaire, en ajoutant "ccs=<UTF-8>", rien ne marche. Si je met simplement "*result = L"éàèç";" ça marche sans problèmes.
Le problème vient surement de l'ouverture du fichier texte ou de la lecture du contenu.
Quelqu'un a une idée?