[pyar] Una consulta mas sobre unicode

Nicolás Rebagliati nicolas.rebagliati en aenima-x.com.ar
Vie Ene 10 18:56:44 ART 2014


Si es python 2.
no esta usando __future__
Si, lo que te pongo es copiado del codigo.

Te lo paso en limpio.

por consola:

In [3]: type(stp.name)
Out[3]: unicode

In [4]: print(u"Nombre {0}".format(stp.name))
Nombre STP Añazco


En django:
        try:
            print(type(stp.name))
            print(u"Nombre {0}".format(stp.name))
        except Exception as e:
            print(e)

esta es la salida:
<type 'unicode'>
'ascii' codec can't encode character u'\xf1' in position 12: ordinal not in range(128)

Pero si hago el encode:
        try:
            print(type(stp.name))
            print(u"Nombre {0}".format(stp.name).encode('utf-8'))
        except Exception as e:
            print(e)

Salida:
<type 'unicode'>
Nombre STP Añazco


No entiendo porque en la consola me usa (aparentemente) utf-8 como encoding y django ASCII


On Jan 10, 2014, at 6:15 PM, Nicolás Rebagliati <nicolas.rebagliati en aenima-x.com.ar> wrote:

> Listo, ya encontre el problema.
> En lugar de encodear el unicode del format tenia que encodear al unicode resultante
> print(u"Nombre {0}".format(stp.name).encode('utf-8'))
> 
> ahi si funciona.
> 
> porque sera que en la consola me funciona y en django no??
> Me esta tomando ASCII como default encoding no?
> 
> lo raro es que el .py tiene el header
> # -*- coding: utf-8 -*-
> 
> 
> On Jan 10, 2014, at 6:09 PM, Nicolás Rebagliati <nicolas.rebagliati en aenima-x.com.ar> wrote:
> 
>>> 
>>> Y en el ejemplo específico que te explota:
>>> 
>>> print(u"{0}".format(x.name.encode('utf-8')))
>>> 
>>> Fijate que estás intentando meter un string encodeado (
>>> x.name.encode('utf-8') ) dentro de un objeto unicode ( u"{0}" ).
>>> Si x.name es un unicode, con qué objetivo lo encodeás, si lo querés
>>> meter dentro de otro unicode?
>>> 
>>> Saludos!
>>> 
>>> -- 
>>> fisa  -  Juan Pedro Fisanotti
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>> 
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> 
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>> 
>> Si eso que decis, es verdad..pero me pasa igual..lo raro es que me pasas desde django, si lo hago por consola va todo ok:
>> 
>> In [6]: type(stp.name)
>> Out[6]: unicode
>> 
>> In [7]: print(u"{0}".format(stp.name))
>> STP Añazco
>> 
>> 
>> pero si lo hago desde django:
>> 
>>        print(type(stp.name))
>>        print(u"Nombre {0}".format(stp.name))
>> 
>> <type 'unicode'>
>> 
>> 'ascii' codec can't encode character u'\xf1' in position 12: ordinal not in range(128)
> 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140110/6c0aa479/attachment.html>


More information about the pyar mailing list