[Python-es] error al decodificar unicode

Ángel Luis García García algg78 en telefonica.net
Jue Mar 3 22:55:18 CET 2011


Hola, buenas noches. Gracias Douglas por tu comentario. Yo puedo darte mi
opinión sobre codificaciones. Lo del sitecustomize, tal como se comenta en
el manual, es únicamente para decirle a ciertas funciones de Python, que
codifiquen su salida en la codificación deseada. Puedes hacer eso
perfectamente, pero no tiene nada que ver con tu problema, creo yo. Una cosa
es decirle a Python como tienen que ser la salida de ciertas funciones y
otra muy distinta es decirle a Python que un fichero tiene una codificación
ú otra. La codificación de un fichero, en Python, se puede hacer de dos
formas, a saber, mediante un byte BOM al principio del fichero (esto lo hace
NotePad++) ó en la cabecera (primera ó segunda línea) del fichero de código
fuente, incluir una sentencia del tipo:

# -*- coding: utf-8 -*-

Incluso con estas cuestiones hay veces que hay problemas con algunos
frameworks, con respecto a codificaciones, ya que internamente pueden
codificar las cadenas de una manera ú otra. Ahora bien, si con todo sigues
teniendo problemas, yo de tí miraría la página de códigos del sistema y
cosas de estas, externas a Python. Por ejemplo, en Windows, la codificación
en el intérprete de comandos difiere de la plataforma gráfica (algunas
veces), aunque parezca mentira.

Espero haberte ayudado.

Un cordial saludo.

El 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ó:
>
>  En su "Manual de Introducción a Python" (que está siendo comentado en
>> estos
>> momentos en otro hilo y por lo cual lo felicito y le agradezco) Ángel Luis
>> García plantea (pág. 19) crear en
>> /usr/local/lib/python2.6/site-packages un archivo sitecustomize.py con el
>> siguiente contenido:
>>
>> import sys
>> sys.setdefaultencoding('iso-8859-1')
>>
>> que (si no entiendo mal) Python debe leer cuando se inicie. Después de
>> esto
>> no habría problema con la ejecución del sencillo programa propuesto por
>> P en vel. Sin embargo, tampoco con esto he tenido suerte.
>>
>
> No se te ocurra hacerlo así. Resolverás tu problema localmente, pero nunca
> estarás seguro de que tu código funcione en cualquier sitio (si buscas en el
> archivo de esta lista verás alguna discusión antigua sobre el tema).
>
>
>  para prueba.py=
>>>
>>> #!/usr/bin/python
>>> # -*- coding: UTF8 -*-
>>>
>>>
> Te sobra un espacio tras la almohadilla.
>
>
> Vamos a ver si aclaramos algunos conceptos sobre este problema:
>
> 1) python puede trabajar "nativamente" con unicode, algo que luego debe
> codificarse según requiera la salida por la terminal. Por tanto, lo primero
> es averiguar qué codificación usa la terminal
>
> 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").
>
> 3) si vamos a leer ficheros de texto que no sean en ascii, se deben abrir
> con 'codecs.open'
>
>
> 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.
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Ángel Luis García García
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110303/5de31d24/attachment.html>


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