Partilhar via


Problemas com aplicativos de console

As funções do console de 8 bits usam a página de código OEM. Todas as outras funções usam a página de código ANSI por padrão. Isso significa que 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 retornar uma cadeia de caracteres que contém determinados caracteres ANSI estendidos, WriteConsoleA não exibirá a cadeia de caracteres corretamente.

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

Salvo essa solução, um aplicativo de console deve usar a função SetFileApisToOEM . Essa função altera funções de arquivo relevantes para que elas produzam cadeias de caracteres de conjunto de caracteres OEM em vez de cadeias de caracteres de conjunto de caracteres ANSI.

A seguir estão as funções de arquivo:

Ao lidar com linhas de comando, um aplicativo de console deve obter a linha de comando em formato Unicode e convertê-la em formato OEM, usando as funções de caractere para OEM relevantes. Note, também, que argv usa o conjunto de caracteres ANSI.