Partager via


Problèmes des applications d’une 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 renvoyées par les fonctions de console peuvent ne pas être traitées correctement par les autres fonctions et vice versa. Par exemple, si FindFirstFileA renvoie 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.

À défaut de cette solution, une application console devrait 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.

Les fonctions des fichiers sont les suivantes :

Lorsqu'elle traite des lignes de commande, une application console doit obtenir la ligne de commande au format Unicode et la convertir au format OEM, à l'aide des fonctions caractère vers OEM correspondantes. Notez également que argv utilise le jeu de caractères ANSI.