problemas con encoding en cmd

Rafael Villar Burke pachi en rvburke.com
Mar Ene 29 14:59:06 CET 2008


Chema Cortes wrote:
> El Tuesday 29 January 2008 12:37:16 Josu Rodriguez escribió:
>   
>> El codepage cargado por el sistema es 850 (latin).
>> he probado a porner
>> # -*- encoding: 850 -*-
>> y
>> # -*- encoding: cp850 -*-
>>
>> Pero nada, he añadido una linea
>> print "ejecución"
>>
>> Y también aparece mal la tilde.(se que esto puedo solucionarlo con print
>> u"ejecución", pero con netsh no me funciona)
>>     
>
> Yo te insisto en que no es problema de python. El comentario con la 
> codificación es sólo para indicar la codificación a partir de la cuál 
> codificar las cadenas unicode de tu script. Si no usas unicode, no sirve para 
> nada.
>
> Por lo que dices, el netsh no entiende unicode. Intuyo que usa la codificación 
> del sistema (cp850) y espera que la cadena esté en esa codificación.
>
> La solución, a parte de codificar los caracteres a mano como dices en otro 
> mensaje, pasa por codificar bien las cadenas de caracteres. Algo tal que así:
>
> #-*- coding: utf8 -*-
>
> os.popen('netsh interface ip set dns "%s" static 192.168.1.1'
>            % u"Conexión de área local".encode("cp850")
>   
Como indica Chema, lo correcto es siempre realizar de forma explícita la
codificación y decodificación de lo que se envía y recibe, pero, además,
hay que tener en cuenta que en windows se da la particularidad de que la
codificación del sistema y de la consola normalmente difieren entre si,
y el conjunto de caracteres habitual del subsistema de consola no admite
caracteres unicode.

En este enlace se discute bastante a fondo el tema y se dan varias
posibilidades para solucionarlo.
http://www.selenic.com/mercurial/wiki/index.cgi/Character_Encoding_On_Windows

La solución más coherente parece cambiar la codificación de la consola a
la codificación del sistema.

¿Se ocurre para hacer esto algo más elegante que os.system("chcp %s" %
locale.getpreferredencoding())?

Saludos,

Rafael Villar Burke
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es