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