Avec le petit programme présent ci-dessus et le fichier suivant :
Noëlle aperçut bientôt là-bas l'âne bâté
À mesure qu’il s’éloigne ...
Âne que tu es !
Étant donné qu’il ...
Être ou ne pas être ...
Île du Pacifique, Tahiti se distingue par ...
Ôte-toi de là !
on obtient cet affichage dans la console Windows.
On voit bien la lettre É affichée correctement mais pas les autres voyelles accentuées en majuscules. Les divers essais que j'ai pu faire et qui sont basés sur les documentations disponibles sur Internet produisent les mêmes résultats. Il y a-t-il une directive ou une instruction pour faire correctement cet affichage ? Je n'ai pas trouvé la réponse appropriée mais ce serait souhaitable. Merci.
Bonjour,
le type char a 256 valeurs possibles, si on prend en compte toutes les langues, c'est insuffisant pour tous les caractères. Sous Windows, en Europe de l'ouest, la table des caractères choisie est souvent la Windows-1252. On parle de page de code, et cette page de code contient bien tous les caractères français.
Mais la console (cmd.exe) utilise par défaut une toute autre page de code, c'est l'IBM-850.
En commençant ton programme par
system("chcp 1252 > NUL");
ça demande à la console d'utiliser la Windows-1252. Ca devrait suffire si la police de caractère de la console a tous les caractères français.
Bonjour Dalfab,
Merci beaucoup pour votre réponse qui complète bien ce que j'avais indiqué. Mais j'ai essayé plusieurs variantes de l'instruction supplémentaire : system("chcp 1252 > NUL"); sans avoir réussi ce que je souhaitais.
Je viens de publier sur CCM-CS un programme qui effectue le remplacement de l'encodage ANSI par l'encodage OEM du texte que l'on affiche dans la console Windows. Je vous propose de comparer le code source du programme principal tel que publié et l'image correspondante de la console Windows.
Ce programme n'utilise aucune dépendance extérieure.
Cordialement, pgl10
Bonjour Dalfab,
Je dois préciser maintenant que ce j'ai écrit ci-dessus a été obtenu avec la police par défaut de la console Windows, c'est à dire le police Polices Raster. Mais il est important d'indiquer que l'utilisation de la console Windows avec la police Lucida Console a un tout autre fonctionnement. En voici un exemple avec l'instruction
system("chcp 1252 > nul");
Si je compile le programme extrêmement simple en C++ suivant :
#include <iostream> int main(void) { system("chcp 1252 > nul"); std::cout << std::endl << "Ève Béart à la télévision" << std::endl << std::endl; system("pause"); return 0; }
j'obtiens dans la console Windows avec la police Lucida Console ceci :
Et pour utiliser la police Lucida Console :
- cliquer tout en haut de la fenêtre
- cliquer sur Propriétés
- choisir : Police => Lucida Console
Merci beaucoup à Dalfab d'avoir indiqué l'emploi de cette instruction : system("chcp 1252 > nul");
Très cordialement, pgl10