Problema de codificación en BD Postgres

2,309 views
Skip to first unread message

Edwin Caldon

unread,
Nov 21, 2011, 7:07:26 PM11/21/11
to djan...@googlegroups.com
Hola,

al intentar hacer una inserción en la BD Postgres, sale éste error:

DatabaseError: secuencia de bytes no válida para codificación «UTF8»: 0xc973
HINT:  Este error también puede ocurrir si la secuencia de bytes no coinciden con la codificación esperada por el servidor, lo cual es controlado por el parámetro «client_encoding».

Realizo cambios de dicha variable (postgresql):

     * ALTER DATABASE unisaluddb SET client_encoding=latin1; (latin1 no funciona es peor) 
         DatabaseError: car�cter 0xe2809c de codificaci�n �UTF8� no tiene equivalente en �LATIN1�
     * select datname, datdba, encoding, datcollate, datconfig from pg_database;
     * ALTER DATABASE unisaluddb SET client_encoding='utf8'; (sigue el mismo error)
     * ALTER DATABASE unisaluddb SET client_encoding='utf-8'; 
        InterfaceError: can't decode into unicode string from UTF-8
         (no puede recuperar los datos de la BD y pasarlos a unicode)
     * ALTER DATABASE unisaluddb SET client_encoding='unicode';  (sigue el mismo error)

Realizo cambios en el modelo, en la función que retorna la cadena que necesito:
 
 de:

 def __unicode__(self):
        if len(self.comment) > 50:
            return self.comment[:50] + "..."
        return self.comment[:50]


  a: 

 def __unicode__(self):
        if len(self.comment) > 50:
            return u'%s' % (self.comment[:50] + "...")
        return u'%s' % (self.comment[:50])


Pero tampoco, así que agradezco cualquier otra pista que
me puedan ofrecer.

Información de la BD:
 
$select datname, datdba, encoding, datcollate, datconfig, datctype from pg_database;
  datname   | datdba | encoding | datcollate  |         datconfig         |  datctype   
------------+--------+----------+-------------+---------------------------+-------------
 mydb |  20970 |        6 | es_CO.UTF-8 | {client_encoding=utf8} | es_CO.UTF-8


Los locales del sistema:

         [*] en_US ISO-8859-1                                                                                                                         ▒   │ 
   │    [*] en_US.UTF-8 UTF-8                                                                                                                        ▒   │ 
   │    [*] es_CO ISO-8859-1                                                                                                                         ▒   │ 
   │    [*] es_CO.UTF-8 UTF-8                                                                                                                        ▒   │ 
   │    [*] es_ES ISO-8859-1                                                                                                                         ▒   │ 
   │    [*] es_ES.UTF-8 UTF-8  


Saludos.

Ricardo Daniel Quiroga

unread,
Nov 21, 2011, 9:11:53 PM11/21/11
to djan...@googlegroups.com

--
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.

Hola

que raro, probaste con UTF8 cambiando la Colacion de la BD a Spanish, Donde Vivas y Charset a lo mismo.. no me fije via codigo PSQL como se hace.. yo lo defino via PGAdmin

saludos



Edwin Caldon

unread,
Nov 22, 2011, 9:19:03 AM11/22/11
to djan...@googlegroups.com
Ambos están en es_CO.UTF-8:

* Collation :  es_CO.UTF-8
* Character Type :  es_CO.UTF-8

y

* Encoding : UTF8

Saludos.

Edwin Caldon

unread,
Nov 22, 2011, 10:14:16 AM11/22/11
to djan...@googlegroups.com
Éste el mensaje de error (completo):


Saludos.

Edwin Caldon

unread,
Nov 22, 2011, 3:16:07 PM11/22/11
to djan...@googlegroups.com
En los locales de sistema realizo:

 #export LANG=es_CO.UTF-8

  Verifico:

 # set | grep LANG
   LANG=es_CO.UTF-8

Además de colocar la variable DEFAULT_CHARSET en settings.py:
DEFAULT_CHARSET = "UTF-8"

Pero sigue el mismo problema/error.

Saludos.
Reply all
Reply to author
Forward
0 new messages