J'apprends toujours C++, alors portez-moi avec moi et mon code bâclé. Le compilateur que j'utilise est DEV C++. Je veux pouvoir générer des caractères Unicode à la console à l'aide de COUT. Quand j'essaie des choses comme:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
std::cout << "Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
system("PAUSE");
return 0;
}
Il génère des caractères étranges à la console, comme μA ■ gg. Pourquoi le fait-il et comment puis-je arriver à afficher đßğĝ? Ou n'est-ce pas possible avec Windows?
Qu'en est-il de std::wcout
?
#include <iostream>
int main() {
std::wcout << L"Hello World!" << std::endl;
return 0;
}
Il s'agit du flux de sortie de caractères large standard.
Pourtant, comme l'a souligné Adrian, cela ne traite pas du fait cmd
, par défaut, ne gère pas les sorties Unicode. Ceci peut être adressé par la configuration manuelle de la console, comme décrit dans la réponse de Adrian:
cmd
avec l'argument /u
;chcp 65001
Pour changer le format de sortie;Vous pouvez également essayer d'utiliser _setmode(_fileno(stdout), _O_U16TEXT);
, qui nécessite fcntl.h
Et io.h
(Comme décrit dans cette réponse , et documenté dans ce blog post )).
Je ne suis pas sûr que Windows XP Supporte pleinement ce dont vous avez besoin. Il y a trois choses que vous devez faire pour activer UNICODE avec une console de commande:
cmd /u
. Les /u
dit que vos programmes produiront UNICODE.chcp 65001
Pour indiquer que vous souhaitez utiliser UTF-8 au lieu de l'une des pages de code.Lucida Console Unicode
. Mon XP boîte a un sous-ensemble de celui appelé Lucida Console
. Il n'a pas de répertoire très complet, mais cela devrait être suffisant si vous essayez simplement d'afficher certains caractères accentués.Vous avez utilisé le flux de sortie ANSI. Vous devez utiliser
[.____] std::wcout << L"Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
Aussi, utilisez STD :: Cin.get (), pas System ("Pause")