[Lazarus-es] Fw: Salvar cadena UTF8 en Firebird con Characterset ISO8859_1

Ismael L. Donis Garc?a ismael en citricos.co.cu
Mar Dic 15 18:39:00 CET 2009


Ante tremendo enredo no sería mejor implementar alguna función para usar 
solo una conexión? En lo personal no me gusta eso de las 2 conexiones.

Creo que he caído de nuevo en el aspecto que no estoy de acuerdo contigo de 
que el componente TIBConneciton está mal implementado.

Debía tener 2 propiedades CharSet una para visualizar los datos y otra para 
salvar en la base de datos.

Saludos cordiales
=========
¦¦ ISMAEL ¦¦
=========
----- Mensaje original ----- 
De: "JoshyFun" <joshyfun en gmail.com>
Para: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Enviado: lunes, 14 de diciembre de 2009 04:56
Asunto: Re: [Lazarus-es] Fw: Salvar cadena UTF8 en Firebird con Characterset 
ISO8859_1


Hello Ismael,

Monday, December 14, 2009, 11:59:34 PM, you wrote:

ILDG> Disculpen el problema es otro, lo acabo de verificar ahora mismo.
ILDG> Cuando pongo para salvar:
ILDG> sqlstr := 'update mpdatge set mpdatge.clave=''' +
ILDG> UTF8ToAnsi(scadena('Ismael6602')) + '''';
ILDG> Si me salva bien en la base de datos, pero en el grid me
ILDG> muestra ??????, yo pensé que salvaba ?????? porque eso era lo
ILDG> que mostraba el grid, pero entre en el flamerobin y si salva
ILDG> bien, ahora es ver como lo muestro en el grid bien, ósea que no
ILDG> salga ?????? sino los datos correctos.
ILDG> Si salvo con:
ILDG> sqlstr := 'update mpdatge set mpdatge.clave=''' +
ILDG> scadena('Ismael6602') + '''';
ILDG> Si da el error:
ILDG> EIBDatabaseError: arithmetic exception, numeric overflow, or string 
truncation.

El grid te lo muestra mal por que el grid siempre espera los datos en
UTF8, no hace ninguna conversión y como le llegan datos en ANSI pues
se ha liado.

Una forma más o menos simple que puede ser que te funcione, divide en
dos conexiones la base de datos tus SQL, los que van a componentes
gráficos (tipo DBGrid) directamente usa una conexión con charset UTF8,
los que controles manualmente con sentencias SQL a mano a una con
charset ANSI (El ISO que corresponda).

Si sacas datos del interfaz visual para enviarlos por uno manual o al
revés recuerda de hacer siempre la conversión ANSI->UTF8->ANSI que sea
apropiada según la dirección.

-- 
Best regards,
 JoshyFun


_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list