Sous Windows, il y a trois jeux de caractères qui cohabitent au sein du système : OEM, ANSI et Unicode.
OEM et ANSI sont variables et dépendent du Windows en question. OEM est utilisé pour le terminal, ANSI pour tout le reste.
Unicode a été rajouté ensuite.
Donc le problème, manifestement, c'est que ton fichier source est écrit en ANSI, qui doit être du Windows-1252 (similaire à de l'ISO-8859-1) alors que ton terminal affiche de l'OEM (qui doit être de l'IBM 850).
Il faut donc convertir ton texte dans le bon jeu de caractères, soit à l'exécution soit dans ton code.
Ok, merci, mais comment dois-je faire cela ?
C'est un travail à remettre, alors j'aimerais bien que le texte dans le code source soit aussi compréhensible que le texte affiché dans la console à moins que ce soit impossible. Alors, il faudrait tout simplement que je n'utilise pas les caractères pour faire des encadrés et que je ne mette pas d'accent sur les lettres.
À moins peut-être que je crée l'exécutable avec la source qui a des caractères bizarres, mais qu'à la console tout est parfait et que je fournisse le code source que j'ai écrit avec les bons caractères, mais non compilé.
Je ne sais si je suis clair, désolé...
Merci.
Utilise wprintf() /putws() et préfixe tes chaînes avec un L majuscule:
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part wprintf(L"Médinoc\n");
Note: Ça ne marche pas sous Visual 6, qui s'arrêtera au "é".
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Malheureusement, ça ne semble pas fonctionner.
Je me demandais aussi si d'un ordinateur à l'autre, les caractères affichés dans le code pourraient être différents ? Et pour ce qui est des caractères affichés dans la console ?
Merci.
Bah ce sera différent sur un Windows qui utilise un autre encodage OEM, oui...
Par contre je me suis trompé, c'est CP437 en Europe de l'Ouest/États-Unis/etc.
@loufoque: Non tu ne t'es pas trompé pour l'Europe de l'Ouest: C'est bien CP850.
Par contre, c'est CP437 aux États-Unis, ce qui fait que nous avons certains box-drawing characters en moins qu'aux USA (notamment, tous les BDC "mixtes" (contenant à la fois un trait simple et un trait double) sont absents en France).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ça fait des lustres que je n'ai plus eu à faire cela mais vois si un « chcp 437 » tapé dans la console fonctionne encore. Mais à mon avis, cela ne règlera que partiellement le problème. Tu peux aussi regarder ceci :
http://psydk.org/archives/2004-01-20...e-sous-windows
Il y est fait état de SetConsoleOutputCP(), mais ce n'est évidemment pas portable.
Si tu veux être - presque - sûr d'avoir quelque chose qui passe de la même façon partout en mode console, reste à l'ASCII de base. C'est moins joli, mais c'est plus sûr.
Partager