Partager via


Problèmes liés à l’application console

Les fonctions de console 8 bits utilisent la page de codes OEM. Toutes les autres fonctions utilisent la page de codes ANSI par défaut. Cela signifie que les chaînes retournées par les fonctions de console peuvent ne pas être traitées correctement par les autres fonctions et vice versa. Par exemple, si FindFirstFileA retourne une chaîne qui contient certains caractères ANSI étendus, WriteConsoleA n’affiche pas correctement la chaîne.

La meilleure solution à long terme pour une application console consiste à utiliser Unicode. La console accepte l’encodage UTF-16 sur la variante W des API ou de l’encodage UTF-8 sur la variante A des API après avoir utilisé SetConsoleCP et SetConsoleOutputCP (65001CP_UTF8constante) pour la page de codes UTF-8.

À l’exception de cette solution, une application console doit utiliser la fonction SetFileApisToOEM . Cette fonction modifie les fonctions de fichier pertinentes afin qu’elles produisent des chaînes de jeu de caractères OEM plutôt que des chaînes de jeu de caractères ANSI.

Voici les fonctions de fichier :

Lorsque vous traitez des lignes de commande, une application console doit obtenir la ligne de commande au format Unicode et la convertir en formulaire OEM, à l’aide des fonctions de caractère en OEM pertinentes. Notez également que argv utilise le jeu de caractères ANSI.