[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