Compartilhar via


Problemas do aplicativo de console

As funções do console de 8 bits usam a página de código OEM. As demais funções usam a página de código ANSI por padrão. As cadeias de caracteres retornadas pelas funções do console podem não ser processadas corretamente pelas outras funções e vice-versa. Por exemplo, se FindFirstFileA retorna uma cadeia de caracteres com determinados caracteres ANSI estendidos, WriteConsoleA não exibe a cadeia de caracteres corretamente.

A melhor solução de longo prazo para aplicativos de console é usar Unicode. O console aceitará codificação UTF-16 na variante W das APIs ou codificação UTF-8 na variante A das APIs depois de usar SetConsoleCP e SetConsoleOutputCP para 65001 (constante CP_UTF8) para a página de código UTF-8.

Além dessa solução, aplicativos de console devem usar a função SetFileApisToOEM. Essa função altera as funções de arquivo relevantes para que produzam cadeias de caracteres do conjunto de caracteres OEM em vez de cadeias de caracteres do conjunto de caracteres ANSI.

Veja abaixo as funções de arquivo:

Ao trabalhar com linhas de comando, aplicativos de console devem obter a linha de comando no formato Unicode e convertê-la em formato OEM, usando as funções relevantes de caractere para OEM. Observe também que argv usa o conjunto de caracteres ANSI.