[Python-es] error al decodificar unicode

lasizoillo lasizoillo en gmail.com
Jue Mar 3 22:54:18 CET 2011


El día 3 de marzo de 2011 22:09, Chema Cortes <pych3m4 en gmail.com> escribió:
> En Thu, 03 Mar 2011 21:41:59 +0100, Douglas Jiménez <dougjim en gmail.com>
> escribió:
>
>
>>> para prueba.py=
>>>
>>> #!/usr/bin/python
>>> # -*- coding: UTF8 -*-
>>>
>
> Te sobra un espacio tras la almohadilla.
>

Realmente importa poco. Según dice el pep 263:

More precisely, the first or second line must match the regular
    expression "coding[:=]\s*([-\w.]+)". The first group of this
    expression is then interpreted as encoding name.

Podría usar un comentario de los de vim y todo funcionaría igual. Es
más, incluso algo salido de la más absoluta desesperación funcionaría:

m4c4-local:~ lasi$ python kk.py
España
m4c4-local:~ lasi$ cat kk.py
# mecagoenelputoencoding=utf8
print "España"


>
> Vamos a ver si aclaramos algunos conceptos sobre este problema:
>
> 2) los ficheros de código pueden haberse codificado en cualquier sistema de
> codificación. La codificación utf puede usar una marca al principio del
> fichero para indicarlo, pero algunos editores de texto no saben manejarlas y
> es mejor no usarlas. Por tanto, lo segundo es indicar con un comentario
> (primera o segunda línea) en qué sistema de codificación está creado el
> fichero. Este comentario únicamente influye en cómo se interpretarán los
> literales unicode en el código (Los que aparecen como u".."). El resto del
> funcionamiento no se ve afectado (ya he dicho que python usa unicode
> "nativamente" (aka como "codepoints").
>

Aquí una puntualización menor. El comentario dice con qué se
codificará todo el fichero a excepción de los literales binarios. Esto
permite obscenidades del tipo:

m4c4-local:~ lasi$ python kk.py
Saludos
m4c4-local:~ lasi$ cat kk.py
# -*- coding: rot13 -*-
cevag "Saludos"

>
> Si seguimos con problemas, probar con éste código (codificado en ascii):
>
> print u"Espa\N{LATIN SMALL LETTER N WITH TILDE}a"
>
> Si da error o no se lee "España" correctamente entonces tu problema NO ES DE
> PYTHON.


Me ha encantado tanto tu redacción de este problema tan recurrente que
he decidido meterlo en las faqs:
http://python-es-faq.wikidot.com/start#toc49

Gracias por tu aporte.

Saludos:

Javi


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