[Python-es] problemas con encoding en cmd
Rafael Villar Burke
pachi en rvburke.com
Jue Ene 31 14:01:18 CET 2008
Josu Rodriguez wrote:
> 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")
>
Claro, pero esa es una solución particular para tú codificación, ya que
no todo el mundo usa cp850. Al menos habría que usar
locale.getpreferredencoding() en lugar de "cp850".
Está claro que lo más inmediato es usar la codificación activa de la
terminal en uso, aunque eso implica no poder representar muchos
caracteres unicode (como el €).
Pensaba una solución alternativa que cambiase automáticamente la
codificación de la terminal a una más 'capaz', aunque probablemente sea
necesario cambiar la fuente (de la lucida console que viene por defecto
a otra con todos los caracteres unicode). El truco del uso de chcp no
funciona con la terminal que uso habitualmente en windows
(Console[http://console.sourceforge.net/], con bash como intérprete).
Esta consola usa la codificación del sistema, (en este caso cp1252,
similar a latin-1) y no la de la consola de windows.
En fin... que no es un problema nada sencillo en cuanto te interesa
poder usar una aplicación de texto en windows y linux, o si usas
terminales distintas.
Saludos,
Rafael Villar Burke
Más información sobre la lista de distribución Python-es