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 :

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
}
Une fois le texte retourné, je l'envoie dans une base de données.
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.