[pyar] problemas con el encoding

Mario Cassanelli mcassan en inidep.edu.ar
Jue Oct 21 10:40:34 ART 2010


El programa en python lee una tabla con formato dbf,
y luego se inserta en una tabla de postgres,
La base de datos esta en UTF8,
Linux esta en en_US.UTF8,

el problema ocurre al insertar el registro

con.query(inserto)

y el resultado es este...estuve buscando y no he podido
resolverlo o no he comprendido las soluciones...

[mcassan en patoruzu db_especies]$ ./cargo_especies.py
0 Abadejo Abadejo
1 Anchoa de banco Anchoa de banco
2 Ancho�ta Ancho�ta
Traceback (most recent call last):
File "./cargo_especies.py", line 78, in <module>
con.query(inserto)
pg.ProgrammingError: ERROR: invalid byte sequence for encoding "UTF8": 0xa1
HINT: This error can also happen if the byte sequence does not match the 
encoding expected by the server, which is controlled by "client_encoding".

algun links que tenga que leer, algun help seran bienvenidos...

Saludos
Mario Cassanelli
Pd. nombres de las especies y el programa a continuacion....>>>>



134 Tibur�n sardinero Tibur�n sardinero
135 Tibur�n azul Tibur�n azul
136 Especies pel�gicas Especies pel�gicas
141 Calamar patag�nico Calamar patag�nico
144 Luri�n com�n Luri�n com�n

#!/usr/bin/python
# -*- coding: utf-8 -*-

from dbfpy.dbf import *
import pg


def vacio_n(n):
	if n=='':
		n=0
		return n
	return n

def vacio_s(n):
	if n=='':
		n='0'
		return n
	return n

db=Dbf('../db_auxiliares/especies_ca.dbf',True)
con=pg.connect(dbname='especies', host='localhost', user='')

con.query('delete from especiess where anio=2010')
intctos=0
intAnio=2010
intRec=59500

for i in range(min(intRec,len(db))):
	print i,
	rec=db[i]

	nro_espc=rec["nro_espc"]
	desc_espc=rec["desc_espc"]
	sinonimo_1=rec["sinonimo_1"]
	nmbre_cient=rec["nbre_cient"]
	vigente=rec["vigente"]
	tipo=rec["tipo"]
	cuotas=rec["cuotas"]
	variado=rec["variado"]
	fao_cod=rec["fao_cod"]
	fao_esp=rec["fao_esp"]
	fao_nombre=rec["fao_nombre"]
	pelagicas=rec["pelagicas"]
	g_pelagicas=rec["g_pelagica"]
	rayas=rec["rayas"]
	tiburones=rec["tiburones"]
	print nro_espc,desc_espc,sinonimo_1,nmbre_cient,vigente,tipo,cuotas,variado,fao_cod,fao_esp,fao_nombre,pelagicas,g_pelagicas,rayas,tiburones
	
	inserto="insert into especiess(nro_espc, desc_espc,sinonimo_1,nbre_cient,vigente,tipo,cuotas,variado,fao_cod,fao_esp, fao_nombre, pelagicas, g_pelagicos,rayas,tiburones,anio) values(\'%s\',\'%s\',\'%s\',\'%s\',%s,\'%s\',%s,%s,\'%s\',\'%s\',\'%s\',%s,%s,%s,%s,%d)" % (nro_espc,desc_espc,sinonimo_1,nmbre_cient,vigente,tipo,cuotas,variado,fao_cod,fao_esp,fao_nombre,pelagicas,g_pelagicas,rayas,tiburones,2010)

	con.query(inserto)

db.close()	
con.close()






More information about the pyar mailing list