problemas con encoding en cmd

Josu Rodriguez jrvilda en gmail.com
Jue Ene 31 13:27:08 CET 2008


Creo que no es del todo correcto la opcion de :

os.system("chcp %s" %
locale.getpreferredencoding())?

ya que la consola la tengo en cp850, y el script se ejecuta en esa misma
consola, por lo que sin poner ningún tipo de tipo de código debería de
funcionar, ya que la ñ y tildes estan en la page code 850 latin.

De todos mosdos me apunto la forma de codificar Chema:

#-*- coding: utf8 -*-

os.popen('netsh interface ip set dns "%s" static 192.168.1.1'
          % u"Conexión de área local".encode("cp850")





El día 29/01/08, Rafael Villar Burke <pachi en rvburke.com> escribió:
>
> 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
>



-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   <b>Josu Rodriguez Vilda</b>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Visita mi web en wowberk -
   Colaborador en launchpad -  MCP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------------ próxima parte ------------
_______________________________________________
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