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.