Codecs para consola Windows
Marcos Perez
marcos.perez en rtve.es
Vie Mar 11 12:19:40 CET 2005
Me contesto a mi mismo:
Resulta que, para que funcione bien, hay que cambiar el stream de
salida estandar de Python. Para ello, basta con poner una línea:
sys.stdout=codecs.EncodedFile(sys.stdout, "latin1", "cp850")
Y así, si nuestro fichero fuente de Python esta en latin1, nuestra
salida saldrá correctamente por el terminal.
Rafael Villar Burke wrote:
> Marcos Perez wrote:
>
>> Hola a todos,
>> en una aplicación por consola para Windows, me encuentro que al
>> hacer print de cualquier cadena que tenga acentos o caracteres por
>> encima de 128, estos salen estropeados. Intento hacer un:
>> print "El niño saltó".encode("cp850")
>> por ejemplo, y da el error:
>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xfa in position
>> 17: ordinal not in range(128)
>>
>> ¿Alguna sugerencia?
>>
> Lee antes como unicode y luego usa la codificación que quieras...
>
> encoding = locale.getpreferredencoding()
> cp850conv = lambda x : unicode(x, encoding).encode('cp850')
> print cp850conv("El niño saltó")
>
> Saludos,
>
> Pachi
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
--
---------------------
Marcos Pérez González
Ingeniero de Software
Tlfno: 915815474
RTVE
Prado del Rey
---------------------
Más información sobre la lista de distribución Python-es