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