Existe alguna forma de no tener que anteponer la letra u para que este funcione?
Bueno, como puedes comprobar yo no tuve la necesidad de usar el modificador "u" para especificar un string unicode de forma literal.
¿Te has asegurado de guardar
el archivo.py en codificación ANSI?. Abre el archivo.py en el bloc de notas -> menú: Guardar Como... -> Codificación: ANSI
En el Notepad++ también deberías poder especificar la codificación del archivo a ANSI: Windows-1252, pero no uso ese editor, así que te dije como hacerlo con el Notepad de Windows.
Quizás lo que ocurra es que también tengas asignado un
codepage inapropiado en la CMD de Windows. Para comprobar el
codepage de Windows que usa tu CMD, simplemente escribe el comando
CHCP:
Si usas otro
codepage distinto (como probablemente estarás usando el
CHCP 850) entonces los caracteres que hayas especificado en el código de Python se representarán usando la codificación de la CMD por mucho que especifiques en el código fuente del archivo.py el
codepage Windows-1252 y guardes el archivo en la misma codificación...
Eso puedes evitarlo con el modificador "u" o con el método
decode como ya pudiste ver en el otro comentario que cité, pero ya has dejado claro que no quieres usar nada eso (supongo que por incomodidad). Bueno, pues entonces usando este código deberías poder prevenir ese problema:
# -*- coding: Windows-1252 -*-
import os, sys
os.system('(CHCP 1252)1>NUL')
print "áéíóú ñÑ çÇ ¿"
sys.exit(0)
Nota: El cambio del
codepage de la CMD es temporal, solo tiene efecto en la instancia de la CMD donde se ejecuta el script.py. Para cambiar el
codepage de forma permanente debes utilizar el registro de Windows.
¡Saludos!