Error migrando datos a Postgresql ERROR encoding WIN1252 no tiene equivalente en encoding UTF8

2,481 views
Skip to first unread message

mpulla

unread,
Jul 23, 2015, 11:57:52 AM7/23/15
to Comunidad de Visual Foxpro en Español

Buen día

Estoy migrando datos de tablas libres de VFP a Postgreql 9.4 vía ODBC, en una tabla en particular comienza a migrar y en el registro 130 se cae me dice

Connectivity error: ERROR: character with bute sequense 0x90 in en coding "WIN1252" has no equivalent in encoding "UTF8";

Como puede convertir a encoding UTF8 el contenido del registro antes de hacer el sql.

lcSql = "INSERT INTO mitabla (campo1, campo2, campo3) values (?m.valor1, ?m.valor2, ?m.valor3)"

IF SQLEXEC(_Screen.iHandle, lcSql) = -1
=AERROR(laError)
MESSAGEBOX("Error insertando" + CHR(13) + laError(2))
EXIT
ENDIF 

Saludos.
Mauricio

Miguel Canchas

unread,
Jul 23, 2015, 12:14:58 PM7/23/15
to publice...@googlegroups.com

cambiar seteo

update pg_database set encoding=8 where datname='MI_DB'

 

Deberas de buscar el seteo correspondiente, este es para LATIN1

 

http://ingdesistemasvzla.blogspot.com/2011/02/cambiar-encoding-de-utf-8-latin1-en.html

 

Lo que necesitas es cambiar a LATIN… no creo que sea a UTF8..cheka el enlace..

MK

Carlos Miguel FARIAS

unread,
Jul 23, 2015, 1:32:40 PM7/23/15
to Grupo Fox
Deberías analizar el texto de ese registro, para ver que tiene caracter hexa 90, que parece ser una É (e mayúscula acentuada)

Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

mpulla

unread,
Jul 23, 2015, 1:46:17 PM7/23/15
to Comunidad de Visual Foxpro en Español, carlosmig...@gmail.com, carlosmig...@gmail.com
Hola.

Gracias por responder.

No puedo cambiar el encoding de la db por que ya está en producción, cuando hago una migración con navicat escojo el encoding y migra bien

Hice una pequeña aplicación que se acomoda a lo que necesito, pero el problema se presento en un registro especifico de una tabla.
Necesito cambiar el encoding del registro para no tener problemas al migrar, si es que se vuelve a presentar el problema otra vez, debe haber algo en el zorro para hacer está conversión.

Saludos.
Mauricio

Miguel Canchas

unread,
Jul 23, 2015, 1:49:58 PM7/23/15
to publice...@googlegroups.com, carlosmig...@gmail.com

cambiar seteo

update pg_database set encoding=8 where datname='MI_DB'

 

Deberas de buscar el seteo correspondiente, este es para LATIN1

 

http://ingdesistemasvzla.blogspot.com/2011/02/cambiar-encoding-de-utf-8-latin1-en.html

 

Lo que necesitas es cambiar a LATIN… no creo que sea a UTF8..cheka el enlace..

MK

 

 

Víctor Hugo Espínola Domínguez

unread,
Jul 23, 2015, 1:59:31 PM7/23/15
to publice...@googlegroups.com
Hola Mauricio

Puedes probar con esta expresión:

DatoUtf8 = STRCONV(STRCONV(Dato1252, 1), 9)

Saludos,
Víctor.
Lambaré - Paraguay.

mpulla

unread,
Jul 23, 2015, 4:36:12 PM7/23/15
to Comunidad de Visual Foxpro en Español, vich...@gmail.com, vich...@gmail.com
Hola Víctor.

Gracias por el código, en este momento no puedo probarlo, en cuanto pueda lo hago y comento el resultado.

Saludos.
Mauricio

Qsoft

unread,
Jul 24, 2015, 2:20:11 AM7/24/15
to publice...@googlegroups.com
hola,

este error que comentas, lo he sufrido en primera persona. Hay una caracter en el insert que estas haciendo que le da 'fastidio' porque como te lo dice no tiene equivalente en el UTF8. yo lo solucionè de la siguiente manera, para descubrir cual era ese caracter. En la rutina donde se genera el error, hice algo asi, usando tu codigo:


IF SQLEXEC(_Screen.iHandle, lcSql) = -1
=AERROR(laError)
MESSAGEBOX("Error insertando" + CHR(13) + laError(2))
        = strtofile(lcSQL,'c:\error.txt',0)
EXIT
ENDIF

luego abre el archivo con un editor que te permita ver la codifica de los caracters y asi descubri (en mi caso) que habia una caracter de espacio en blanco en algunas direcciones que train este caracter 'extranio' que daba fastido al DB al momento de convertirlo en UTF8. indagando mas el tema, lleguè a descubir que casi el 100% de los casos esa informacion provenia de un 'copia y pega' qe realizaban lo susuarios cuando ingresaban las direcciones de una sucursal de los clientes.

En fase de migracion tuve que ajustar todo a mano. y ya en producion puse un mensaje cuando se daban estos casos, en modo que el usuario, en vez de hacer copia y pega, haga la escritura mediante el teclado.

espero te pueda servir de guia.

PS la solucion que te diò Victor Hugo, si no recuerdo mal, la provè pero en mi caso no funcionò. espero que a ti te pueda servir, porque fue lo primero que se me vino en mente.

Saludos


Enrique Vasquez B.

mpulla

unread,
Jul 24, 2015, 9:24:05 AM7/24/15
to Comunidad de Visual Foxpro en Español, caen...@gmail.com, caen...@gmail.com
Hola Víctor y Enrique.

Lamentablemente no funciona el código de Víctor y tengo que corregir a mano.

REPLACE descripcio WITH STRTRAN(descripcio, 'Â', '') ALL 
REPLACE descripcio WITH STRTRAN(descripcio, 'EL STICO', 'ELASTICO') ALL

Seguramente la data se ingreso como dice Enrique, a lo mejor se pueda hacer algo con el zorro, como comentaba en navicat antes de migrar se elije el encodig y sube sin problemas la data.

Si tienen algún articulo donde pueda comenzar se los agradecería.


Saludos.
Mauricio

Miguel Canchas

unread,
Jul 24, 2015, 9:36:35 AM7/24/15
to publice...@googlegroups.com

cambiar seteo

update pg_database set encoding=8 where datname='MI_DB'

 

Deberas de buscar el seteo correspondiente, este es para LATIN1

 

http://ingdesistemasvzla.blogspot.com/2011/02/cambiar-encoding-de-utf-8-latin1-en.html

 

Lo que necesitas es cambiar a LATIN… no creo que sea a UTF8..cheka el enlace..

MK

 

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com]
Enviado el: viernes, 24 de julio de 2015 08:24 a.m.
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>; caen...@gmail.com
CC: caen...@gmail.com
Asunto: Re: [vfp] Error migrando datos a Postgresql ERROR encoding WIN1252 no tiene equivalente en encoding UTF8

 

Hola Víctor y Enrique.

Reply all
Reply to author
Forward
0 new messages