[pyar] Problemas con encoding. y van...

Pablo Ziliani pablo en kultroom.com
Mie Ene 12 10:52:40 ART 2011


On 01/12/2011 10:39 AM, Maximiliano Robaina wrote:
> En una app django, estoy recibiendo un request con una variable "q" en
> donde viene el valor que posteriormente consultaré a la DB.
>
> En teoría ese "q" debería tener un unicode en iso-8859-1.

En Python 2.x o tenés un unicode() o tenés un str() codificado, un 
unicode en iso-8859-1 no tiene mucho sentido.

> Por ejemplo, "q" vale "nuñez"  y  hago
>
>>> print repr(q)
> obtengo:
>
>   u'nu\ufffd'
>
> Ahora, como puedo saber si eso está en iso-8859-1 ?

Eso está en unicode (por la u que precede la string). Si vos querés 
saber a partir de qué string (str) formateada en qué encoding se formó 
(mal) ese unicode, yo lo que hago son pruebas de este tipo:

 >>> print u'nu\ufffd'.encode('utf8')
nu�
 >>> print u'nu\ufffd'.encode('utf8').decode('latin-1')
nu�


Como ves, no llegué a ningún resultado esclarecedor. Obviamente algo se 
perdió entre nuñez y u'nu\ufffd', te toca a vos buscar dónde (hint: ojo 
con len(str))


> En principio, la excepción me la está tirando la función smart_str de
> django, linea 122
>
> return s.encode(encoding, errors)
>
> Alguna pista de como puedo solucionar esto ?

¿Qué excepción? yo no vi ningún error ni traceback...



More information about the pyar mailing list