[pyar] [Django] UnicodeDecodeError

Natalia Bidart nataliabidart en gmail.com
Mar Ago 5 13:31:00 ART 2014


2014-08-05 12:56 GMT-03:00 Pedro Jose Pezzarini <jose2190 en gmail.com>:

> Hola lista, tengo una eterna y constante espina con django (1.6)
> relacionado a los textos no ascii.
>
> En algunas vistas aparecen los acentos, ntildes etc sin problemas, pero en
> otras no, y genera el error UnicodeDecodeError: 'ascii' codec can't decode
> byte .....
>
> ¿Alguien tiene alguna experiencia con esta situación?
>
> Anexo:
>
> Todos los archivos.py están con la codificación utf-8 como primera linea.
>

Hola Pedro,

Primero que nada, te recomendaría que mires la charla de Facundo Batista
sobre "Entendiendo unicode", si es que aún no la viste. Asumo por la
consulta que estás con Python 2 (con Python 3 la historia es completamente
distinta).

El problema que estás teniendo es que estás mezclando, dentro de tu código,
objetos unicode con cadenas de bytes encodeadas con utf-8 (son dos cosas
bien distintas). Django opera con objetos unicode para todo lo que se
refiere a cadenas de texto.

El hecho de poner en tu código fuente "# coding: utf-8" indica que vos
sabés que tu editor está guardando los archivos a disco encodeados con
utf-8, pero todas las cadenas de texto del archivo son cadenas de bytes
(excepto que vos crees los objetos unicode explícitamente).

Lo que más probablemente necesites, (y que luego de ver la charla debería
ser más simple de entender) es usar objetos unicode dentro de los .py. Para
eso, te recomiendo, en todo archivo python usar:

from __future__ import unicode_literals

y usar b'' cuando realmente necesites bytes (o decode con el encoding
adecuado).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140805/16179bd7/attachment.html>


More information about the pyar mailing list