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 la codificación UTF-8 en la variante A de las API después de usar SetConsoleCP y SetConsoleOutputCP en 65001 (constante CP_UTF8) 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 conjuntos de caracteres OEM en lugar de cadenas de conjuntos de caracteres ANSI.

A continuación, se muestran las funciones de archivo:

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