Bonjour,
Lors de l’exécution de mon programme je voudrais afficher un titre, mais les lettres accentuées sont remplacées par des hiéroglyphes. Comment faire pour résoudre ce problème ?
Bonjour,
Lors de l’exécution de mon programme je voudrais afficher un titre, mais les lettres accentuées sont remplacées par des hiéroglyphes. Comment faire pour résoudre ce problème ?
Quel type de programme, quelle plateforme SVP ?
si c'est un affichage console, je n'espère pas afficher des caractère accentués. Sinon, il faut stocker tes caractères dans des wstring (wide strings) au lieu de strings. Il y a peut être aussi un truc à faire avec les locales, mais je dois avouer ne m'être jamais pencher sur ce genre de problème.
Et sauf erreur de ma part, sous windows avec l'invite de commande de base tu ne peux pas (point).
T'es sous Windows ou Linux ?
D'une manière générale, dès que tu bosses sur du texte, utilise des unsigned char*, et pas des char *.
Après comme on sait pas dans quoi tu veux afficher ton texte, en fonction il faut peut-être lui préciser quel est le code page à utiliser.
sous linux normalement ça marche tout seul avec des simple std::string qui sont vus comme de l'UTF-8
Ils sont vus comme la locale courante au moment de la compilation, tandis que les i/o textes seront vus comme la locale courante au moment de l'exécution. Ca peut poser des problèmes et imposer l'usage d'un setlocale() en début de programme, si tu déploies ton programme sur d'autres machines sous forme compilée.
Je suis sous Windows 7, Visual Studio Express 2010 et Code::block (avec TDM-GCC) sont tous deux installés.
J'utilise Code::block car VS est trop lourd sur ma machine qui date de 6 ans.
Lorsque j'utilise la sortie console, l'utilisation d'un simple setLocale("") sous VS 2010 marche sans aucun problème, les caractères accentués sont correctement affichés. Par contre, sous Code::block, rien à faire, j'ai toujours des "hieroglyphes" en sortie console. J'ai même essayé de changer le type de police de la console mais rien n'y fait.
Dois-je alors en conclure que MingW-Gcc (ou Tdm-Gcc) en est la cause ? Ou y a-t-il une "incantation" que j'ai oublié d'invoquer ?
Il y a plusieurs choses importantes à vérifier :
- le charset de ton fichier
- le charset que considère ton compilateur pour interpréter le fichier
- la locale (incluant le charset, donc) de ta console
Les 3 doivent être identiques pour que ça marche correctement.
Bonjour,
Moi, à votre place, je ferais une simple correspondance pour las caractères spéciaux (majuscules accentuées) entre pages de code.
Dans mon vocabulaire courant, les termes "normalement" "automatiquement" n'existent pas.
Partager