Informatique [ Programmation C ] Problème d'encodage de caractère

Tomikaddle

Apprenti Batcheur
7 Juin 2014
314
5
129
Salut

Je programme actuellement sous Visual Studio 2013 et j'ai un petit problème que voici:

Imaginons le code suivant:

Code:
int copyToClipboard(char* source);
int main()
{
    char string[15] = { 0 };
    fgets(string, 15, stdin);
    copyToClipboard(string);
}
int copyToClipboard(char* source)
{
    int ok = OpenClipboard(NULL);
    if ( !ok )
    {
        return -1;
    }
    HGLOBAL clipbuffer;
    char * buffer;
    EmptyClipboard();
    clipbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(source) + 1);
    buffer = (char*)GlobalLock(clipbuffer);
    strcpy(buffer, source);
    GlobalUnlock(clipbuffer);
    SetClipboardData(CF_TEXT, clipbuffer);
    CloseClipboard();
}

Si lors du fgets, j'entre "ééé" dans la console et que une fois le programme terminé, je fais CTRL + V, j'obtiens ",,,"
Je pense que le problème vient du fait que la console de Windows utilise la page de code 850 dans laquelle le 'é' vaut 130 et que Visual Studio utilise une autre page de code que je connais pas ou 'é' vaut -23

Code:
int main()
{
char a = 'é'; //a vaut -23
char string[15] = { 0 };
fgets(string, 15, stdin);
//On entre "ééé"

a = string[0];//a vaut 130 ou plutôt -126 étant
//donné que c'est un char
}

La question est comment changer la page de code qu'utilise Visual Studio pour que le 'é' vaille 130 également et qu'il n'y ait plus de problèmes au niveau du copyToClipboard ?
 

hebriel

Re-revenu des enfers
22 Décembre 2012
355
37
135
22
France
  • J'aime
Reactions: Oromis

Tomikaddle

Apprenti Batcheur
7 Juin 2014
314
5
129
Si j'utilise Visual Studio c'est parce que j'aime bien l'interface graphique et que je suis plutôt pointilleux à ce niveau, c'est d'ailleurs pour ça que je suis passé de Code Blocks à Visual Studio
 

Tomikaddle

Apprenti Batcheur
7 Juin 2014
314
5
129
Béhh... béhhh...
On va pas se le cacher, Visual Studio c'est un peu mieux visuellement que Code Blocks.
Du moins, je préfère
 

sam88

Manchot retraité
29 Juillet 2011
5 958
322
242
Visual Studio 2013
2irRn13.gif

Les vrais diront vim + gcc (moi par exemple)
 

sam88

Manchot retraité
29 Juillet 2011
5 958
322
242
Wut
Parlez français monsieur svp

edit : plus serieusement
Le problème vient soit de ton IDE soit de Windows.
La preuve avec le fameux vim + gcc dont je parlais
gyPcloWRdfXk.JPG


edit 2 : désolé pour la qualité de merde :°
#EcritureNéon
 
Dernière édition:

Tomikaddle

Apprenti Batcheur
7 Juin 2014
314
5
129
Je sais bien que le problème vient de Windows ou de l'IDE
C'est ce que j'ai dit au début. Dans la console de Windows ( page de code 850 ), les caractères spéciaux ont certains codes qui ne sont pas les même dans l'éditeur qui, je pense fonctionne en Unicode et donc quand je colle les caractères dans l'éditeur, ils n'apparaissent pas de la même façon qu'ils l'étaient dans la console de Windows

Et c'est une solution à ce problème que je cherche, le problème est connu