[Django-es] 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)

1,120 views
Skip to first unread message

Edu Barboza

unread,
May 5, 2010, 1:59:57 PM5/5/10
to Django-es
Hola Amigos,

Tengo un pequeño y grave problema.

Estoy trabajando con Django versión 1.1, estoy tratando de hacer un
alta, baja y modificación utilizando vistas genéricas.

Cuando quiero listar los datos desde la base de datos (Postgres), me
dice que hay un error "'ascii' codec can't decode byte 0xc3 in
position 9: ordinal not in range(128)". DjangoUnicodeDecodeError

Lo que leí fue que tengo problemas de encoding, ahora la pregunta es:
cómo, dónde verifico eso?. Tengo que importar alguna librería, tengo
que modificar algo en el archivo settings.py...

La verdad que estoy siendo un poco pesado con este punto.

Estaré agradecido por sus respuestas

Saludos



--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

Eduardo Barboza

unread,
May 5, 2010, 2:45:29 PM5/5/10
to Django-es
A ver de otra manera,

La codificación por defecto de python es el ASCII, ahora la pregunta
es, cómo hago el cambio interno para que pyhton trabaje con otra
codificación?

Saludos!

El día 5 de mayo de 2010 14:59, Edu Barboza <ebar...@gmail.com> escribió:
> Hola Amigos,
>
> Tengo un pequeño y grave problema.
>
> Estoy trabajando con Django versión 1.1, estoy tratando de hacer un
> alta, baja y modificación utilizando vistas genéricas.
>
> Cuando quiero listar los datos desde la base de datos (Postgres), me
> dice que hay un error "'ascii' codec can't decode byte 0xc3 in
> position 9: ordinal not in range(128)". DjangoUnicodeDecodeError
>
> Lo que leí fue que tengo problemas de encoding, ahora la pregunta es:
> cómo, dónde verifico eso?. Tengo que importar alguna librería, tengo
> que modificar algo en el archivo settings.py...
>
> La verdad que estoy siendo un poco pesado con este punto.
>
> Estaré agradecido por sus respuestas
>
> Saludos
>
>
>
>



--
Luis Eduardo Barboza Bogado

Facundo Casco

unread,
May 5, 2010, 4:58:22 PM5/5/10
to djan...@googlegroups.com
2010/5/5 Eduardo Barboza <ebar...@gmail.com>:
> A ver de otra manera,
>
> La codificación por defecto de python es el ASCII, ahora la pregunta
> es, cómo hago el cambio interno para que pyhton trabaje con otra
> codificación?
>
Aca tenes documentacion sobre el tema:

http://docs.djangoproject.com/en/dev/ref/unicode/

Una de las cosas importantes es usar cadenas unicode en Python, para
crearlas tenes que poner una "u" antes de las comillas asi:

>>> u'día'

Otra cosa importante es definir el encoding de los archivos y
grabarlos con el encoding correcto

http://www.python.org/dev/peps/pep-0263/

Si necesitas algo mas pasa un detalle del error que te tira y podemos
buscar mas en detalle de donde surje tu problema.
--
Hystrix

iPher

unread,
May 6, 2010, 7:01:01 AM5/6/10
to Django-es
Hola.

Por una parte le tienes que decir a Django que tu proyecto trabaja en
UTF-8.

Edita tu fichero settings incluyendo estas dos líneas:
DEFAULT_CHARSET = 'utf-8'
FILE_CHARSET = 'utf-8'

Por otra parte, la base de datos tendrá que estar preparada para
albergar codificación UTF-8. No he trabajado con Postgresql pero con
MySQL se puede definir en la creación de la base de datos (o editar
más tarde):
mysql -u <username> -p --default-character-set=utf8;

Y otro problema que me encontré yo, era que los ficheros no estaban
codificados en UTF-8. Para evitar este problema incluyo esta cabecera
en cada fichero
# -*- coding: utf-8 -*-
y me aseguro de que mi entorno de desarrollo (Eclipse) codifique los
ficheros por defecto en UTF-8
en eclipse ... Preferences / General / Workspace / Text File
Encoding / UTF-8

Puedes comprobar como están codificados tus ficheros con el comando
UNIX file
$> file --mime-encoding nombre_fichero

Saludos
Reply all
Reply to author
Forward
0 new messages