Compartir a través de


Problemas de la aplicación de consola

Las funciones de consola de 8 bits usan la página de códigos oem. Todas las demás funciones usan la página de códigos ANSI de forma predeterminada. Esto significa que las demás funciones pueden no procesar correctamente las cadenas devueltas por las funciones de consola y viceversa. Por ejemplo, si FindFirstFileA devuelve una cadena que contiene determinados caracteres ANSI extendidos, WriteConsoleA no mostrará correctamente la cadena.

La mejor solución a largo plazo para una aplicación de consola es usar Unicode. La consola aceptará la codificación UTF-16 en la variante W de las API o codificación UTF-8 en la variante A de las API después de usar SetConsoleCP y SetConsoleOutputCP en 65001 (CP_UTF8 constante) para la página de códigos UTF-8.

Al prohibir esa solución, una aplicación de consola debe usar la función SetFileApisToOEM . Esa función cambia las funciones de archivo pertinentes para que generen cadenas de juego de caracteres OEM en lugar de cadenas de juego de caracteres ANSI.

A continuación se muestran las funciones de archivo:

GetFileAttributes
GetFullPathName
GetModuleFileName
GetModuleHandle
GetSystemDirectory
GetTempFileName
GetTempPath
GetVolumeInformation
GetWindowsDirectory
LoadLibrary

Cuando se trabaja con líneas de comandos, una aplicación de consola debe obtener la línea de comandos en formato Unicode y convertirlo en formulario OEM mediante las funciones de carácter a OEM pertinentes. Tenga en cuenta, además, que argv usa el juego de caracteres ANSI.