Delen via


Problemen met consoletoepassingen

De 8-bits consolefuncties gebruiken de OEM-codepagina. Alle andere functies gebruiken standaard de ANSI-codepagina. Dit betekent dat tekenreeksen die door de consolefuncties worden geretourneerd, mogelijk niet correct worden verwerkt door de andere functies en omgekeerd. Als FindFirstFileA bijvoorbeeld een tekenreeks retourneert die bepaalde uitgebreide ANSI-tekens bevat, wordt de tekenreeks niet correct weergegeven door WriteConsoleA .

De beste langetermijnoplossing voor een consoletoepassing is Unicode te gebruiken. De console accepteert UTF-16-codering op de W-variant van de API's of UTF-8-codering op de A-variant van de API's na het gebruik van SetConsoleCP en SetConsoleOutputCP naar 65001 (CP_UTF8 constante) voor de codepagina UTF-8.

Als u deze oplossing niet wilt gebruiken, moet een consoletoepassing de functie SetFileApisToOEM gebruiken. Deze functie wijzigt relevante bestandsfuncties zodat ze OEM-tekenreeksen produceren in plaats van ANSI-tekenreeksen.

Hier volgen bestandsfuncties:

Wanneer u met opdrachtregels werkt, moet een consoletoepassing de opdrachtregel in Unicode-formulier verkrijgen en deze converteren naar OEM-formulier, met behulp van de relevante teken-naar-OEM-functies. Houd er ook rekening mee dat argv gebruikmaakt van de ANSI-tekenset.