Bonjour,
Je fais appel à vous car j'avoue que sur ce point, je ne m'y connais vraiment pas trop, et j'ai du mal à trouver des solutions sur le net.
J'ai un programme A (en C) qui exécute un programme B et qui récupère du texte sur la sortie standard de B grâce à un pipe (ainsi que le code de retour).
Pour faire pragmatique, voilà comment je le fais :
Une fois le texte retourné, je l'envoie dans une base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void execute_check(char *ret, int *retcode, char *command) { FILE *pipe; sprintf(ret,"%s%s",PLUGDIR,command); pipe=popen(ret,"r"); fgets(ret,1024,pipe); // on met le texte retourné, dans "ret" int rc = pclose(pipe); *retcode = WEXITSTATUS(rc); // on récupère le code de retour }
Le problème est que le programme B peut retourner du texte avec des accents, et je me retrouve donc bien entendu avec des caractères non désirés, dans la base de données (par exemple "répondu" à la place de "répondu").
D'où ma question : où se trouve le problème dans la chaîne de traitement ? Est-ce au moment de stocker le texte dans une variable qu'il faut faire en sorte que l'encodage soit UTF-8 ?
Et également, comment faire ?
Merci.
Partager