Comment obtenir la page de code par défaut de Windows XP gui?

Le problème est que les versions non anglaises des pages de code XP pour la console et les applications graphiques diffèrent, par exemple si j’écris dans la version polonaise dans la console:

echo zażółć gęślą jaźń > somefile.txt 

Le contenu de ce fichier est:

 zaľ˘† g©lĄ ja«ä 

Cela ne se produit pas si je mets cela dans le fichier cmd. C’est ce texte avec des lettres polonaises. Mais si je crée un fichier ou un répertoire nommé avec des caractères autres que l’anglais, alors qu’il soit exécuté à partir de cmd ou de finger, l’effet est toujours du charabia.

Ma question est donc de savoir comment obtenir cette deuxième page de code avec laquelle le rest de Windows est en cours d’exécution. Dans mon cas, ce CP est 1250 – mais comment obtenir ce nombre à partir de c ++?

GetConsoleCP() et GetConsoleOutputCP() renvoient tous deux 852 (ce qui est correct) et GetThreadLocale() donne 1045.

Si j’essaye de chcp 1045 cela donnera “une mauvaise page de code”.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP – cette clé de registre stocke le numéro de page de code ANSI (il devrait être 1250 dans votre cas) et la page de code des magasins HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP .

Oh, et il existe des fonctions GetACP et GetOEMCP .