Problémy s konzolovou aplikací

8bitové konzolové funkce používají znakovou stránku OEM. Všechny ostatní funkce ve výchozím nastavení používají znakovou stránku ANSI. To znamená, že řetězce vrácené funkcemi konzoly nemusí být správně zpracovány jinými funkcemi a naopak. Pokud například FindFirstFileA vrátí řetězec, který obsahuje určité rozšířené znaky ANSI, WriteConsoleA nezobrazí řetězec správně.

Nejlepším dlouhodobým řešením pro konzolovou aplikaci je použití kódu Unicode. Konzola přijme kódování UTF-16 na variantě W kódování rozhraní API nebo kódování UTF-8 na variantě rozhraní API po použití SetConsoleCP a SetConsoleOutputCP na 65001 (CP_UTF8 konstantu) pro znakovou stránku UTF-8.

Pokud toto řešení zablokuje, konzolová aplikace by měla používat funkci SetFileApisToOEM . Tato funkce změní relevantní souborové funkce tak, aby vytvářely řetězce znakové sady OEM místo řetězců znakové sady ANSI.

Následují funkce souborů:

Při práci s příkazovými řádky by konzolová aplikace měla získat příkazový řádek ve formuláři Unicode a převést ho na formulář OEM pomocí příslušných funkcí znak-to-OEM. Všimněte si také, že argv používá znakovou sadu ANSI.