# -*- coding: cp1252 -*-

Luis Rodrigo Gallardo Cruz rodrigo en nul-unu.com
Jue Mayo 18 20:38:26 CEST 2006


On Thu, May 18, 2006 at 08:05:00PM +0200, Luis Miguel Morillas wrote:
> 2006/5/19, Tny <a.porrua en gmail.com>:
> >en el idle aparecen los carácteres correctamente, pero en la consola no,
> >en lugar de á aparece beta, 3/4 por ó, en lugar de é aparece Ú ¿¿??
> >
> >¿sabe alguien como corregirlo?
> >
> >
> >> Hola
> >> ¿Qué debo poner para que imprima por pantalla correctamente los
> >> caracteres castellanos?
> >> vocales con tildes y esas cosas

Curso patrulla de codificaciones y python:

1. Las cadenas están hechas de caracteres.
2. Los caracteres se representan en memoria como (una secuencia de)
numeros. La elección de que número representa un caracter se llama
'codificación'.
3. Diferentes sistemas usan diferentes codificaciones.
4. Un archivo .py es, en si mismo, una cadena que el compilador lee para
transformar en una secuencia de instrucciones a ejecutar.
5. Cuando python quiere imprimir una cadena, necesita convertirla en una
secuencia de números, que envia a algún dispositivo de salida (consola,
widget gráfico, impresora, etc)

Entonces:
Tu programa está guardado en disco, como una secuencia de números, de
acuerdo a *alguna* codificación, que es elegida por tu editor. La línea
-*- coding: bla-bla-bla -*- le dice al *compilador* cual codificación es
esa. Si tu editor sugiere alguna, lo mejor es que le creas y la dejes
como está. 

Una vez compilado y ejecutandose, hay en memoria unas cadenas de
caracteres que, presumiblemente, quieres imprimir. En el caso default
Python toma la cadena y la pasa por la codificación default del sistema
y avienta los números resultantes al dispositivo de salida. Si lo que
python cree que es la codificación default y lo que el dispositivo
espera como codificación no coinciden, pues el dispositivo va a poner
caracteres 'raritos'.

Así que:
a) puedes corregir la codificación default. Asomate al modulo 'site'.
b) puedes hacer la codificación tú, evitando el default:
  print "mi cadena".encode("mi-codificación-favorita")

  Dado que suena a que estás en Win, lo más probable es que tu
  codificación favorita sea cp1252. El resto del mundo castellano usa
  iso8859-1 ó iso8859-15. O prueba también con utf8

-- 
Rodrigo Gallardo
PGP Key ID:  ADC9BC28 
Fingerprint: 7C81 E60C 442E 8FBC D975  2F49 0199 8318 ADC9 BC28
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/python-es/attachments/20060518/1ea4db88/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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