J'ai essayé de code> printf code> avec des caractères accentués tels que L'éditeur de texte dans le DVC ++ IDE les affiche bien - c'est-à-dire que le code source a l'air bien.
Je suppose que j'ai besoin d'une bibliothèque autre que J'utilise IDE Boodshed Devc Exécuter sur Windows XP. P> á é í ó ú code>: p>
printf ("mon nom est Seán \ n"); code> p>
stdio.h code> et peut-être une variante de la normale
printf code>. P>
3 Réponses :
La console Windows est généralement considérée comme mal cassée en ce qui concerne les codages de caractères. Vous pouvez lire sur ce problème ici , par exemple. P>
Le problème est que Windows utilise généralement le code ANSI (qui suppose que vous êtes en Europe occidentale ou en Amérique Windows-1252), mais la console utilise le codépage OEM (CP850 sous la même hypothèse). P>
Vous avez plusieurs options: p>
Chartoem () code>). L'inconvénient est que si l'utilisateur redirige la sortie dans un fichier (> fichier.txt code>) et ouvre le fichier avec par exemple. Notepad, il le verra mal. Li>
- Modifiez le code de code de la console: Vous devez sélectionner une police de la console TTF (Console de lucida, par exemple) et utilisez la commande
CHCP 1252 code>. li>.
- Utilisez un texte UNICODE et
WPRINTF () CODE>: Vous avez besoin de la police de la console TTF de toute façon. LI>
ul>
Peut-être le meilleur est d'utiliser Unicode.
Voici comment ... p>
Tout d'abord, définissez manuellement votre police de console sur "Consoleas" ou "Console Lucida" ou quelle que soit la police de type Unicode True Peut choisir (les «polices de raster» peut ne pas fonctionner, ce n'est pas des polices unicode, bien qu'ils puissent inclure des caractères qui vous intéressent). p>
Suivant, définissez la page Code de la console sur 65001 (UTF-8 ) Avec puis convertir votre texte en UTF-8 (si ce n'est pas encore dans utf-8) en utilisant Enfin, appelez Voici une petite fonction qui fait toutes ces choses qui font toutes ces choses Pour vous, c'est une variante "améliorée" de suivant tes tests de cette fonction: p> et devrait aboutir au texte suivant de la console: p> Je ne connais pas le codage dans lequel votre IDE stocke des caractères non-ASCII dans .C /.cpp les fichiers et je ne sais pas ce que votre compilateur fait wh FR rencontre des caractères non-ASCII. Cette partie que vous devriez déterminer vous-même. P> tant que vous fournissez à ps Certains détails de gory sur les polices de console peuvent être trouvés ici . p> p> SETCONSOLEOutPutCP (cp_utf8) code>. p>
widechartomultibyte (cp_utf8, ... ) code>. p>
writeconsolea () code> pour émettre le texte UTF-8. p>
WPRINTF () code>: p>
_wprintf () CODE> CODED UTF-16 Texte ou appel
WriteConsolea () Code> avec texte UTF-8 correctement codé, les choses doivent fonctionner. P>
Le problème avec cette solution est la "définir manuellement la police de votre console sur [...] quelle que soit la police d'unicode true de type que vous pouvez choisir" i>. Expliquer qu'à un utilisateur final en fait une solution difficile à déployer.
@Clifford et je pensais que c'était un problème de Windows.
200 lignes à imprimer 'é'? Je suppose qu'il est possible de faire plus simple.
@ King'Sjest N'hésitez pas à partager avec nous vos résultats.
Citer quelqu'un sur cplusplus.com: "Trop de choses ont besoin d'aller à droite pour le faire correctement, et tous ne peuvent pas être contrôlés de votre programme. C'est tellement peu fiable qu'il ne vaut pratiquement jamais la peine de ne jamais valoir l'effort.Transt-moi, je parle de expérience. L'oublie juste. "
@ King'Sjest Otoh, si nous ne ciblons pas la cible mobile, si nous traitons avec des fenêtres parfaites (que XP et 7 sont depuis qu'ils ne sont plus développés), des hacks stables peuvent être utilisés. Je ne sais pas si Windows 10 a toujours ce problème et doit d'abord atteindre la perfection. :)
le Windows-1252 (également appelé «ANSI») jeu de caractères utilisé par Le mode de console Windows n'est pas le même que celui utilisé par les applications GUI. Par conséquent, la représentation de l'IDE diffère de la représentation d'exécution.
Une solution rapide et sale pour votre exemple est la suivante: p> la plupart des solutions à ce problème sont imparfaites d'une manière ou d'une autre. Une autre solution la plus simple pour les applications Windows nécessitant une vaste localisation multilingue est de les écrire sous forme d'applications GUI utilisant Unicode. P> P>
Merci à tous ceux qui m'ont donné des réponses --- Rodrego, Alexey et Clifford. J'apprécie vraiment les conseils. Cela me prendra un peu de temps pour essayer les suggestions et prendre la tête autour du sujet. Ensuite, je reviendrai sur cette question dans le forum pour dire à Waht que j'ai utilisé - ou demandez plus d'aide si nécessaire. Seán