Post by wastedyearsHola, Antoine, ante todo gracias por tu ayuda...
Yo ejecuto este código (desde el VStudio o bien en una consola abierta
[...]
Post by wastedyears+esas ±?
+esas ±?
Antes ya probé moviendo las funciones estas de todas las formas y
maneras, pero no he podido... Por defecto mi consola tiene activa la
página de códigos 850.
Que es lo normal, y debemos _cambiarlo_ a 1252.
Primero, averigua que tienes una fuente TrueType (p.e. Lucida Console) para
la consola (propriedades de la consola, en el menú sistema de la ventana
negra). Eso de cambiar no va bién con une «fuente de mapa de bits».
Si no, ¿puedes probarlo en Windows 2000?
Estoy a punto de pensar que es una "diferencia" entre los dos; es decir, que
Microsoft habría removido algunas cosas del suporte consola en XP (por
mejorar la compatibilidad con 9x).
Post by wastedyearsLo he comprobado y es efectivamente la internacional,
Si, lo es, pero la organización de los carácteres sigue la de la original
(437) del PC, es decir el orden «OEM», no el orden «Ansi» que es él que
maneja Windows. Y en eso radica tu problema.
Post by wastedyearsasí que las ñ etc deberían mostrarse correctamente sin ningun cambio...
Va ser que no. En 850, la ñ está en posición 164 (0xA4); por eso tienes que
enviar el códiga 164 (como en putchar(164)) para verla.
Pero en programación Windows (o Internet, es decir, como en este mensaje) la
'ñ' está codificada como 241, 0xF1. Y tu programa, si no haces algo, está
haciendo el equivalente de putchar(241)...
Por eso, o bién modificas tu programa (como te indiquaba Zara o lo
arreglaste) para convertir los 241 en 164 antes de imprimirlos, o bién
mandaste a Windows que lo hagas para tú (con SetConsoleOutputCp); pero en
este ultimo caso, Windows necesita que todo siga en su puesto, y por defecto
(y compatibilidad con lo antiguo), no lo es.
Antoine