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

JoshyFun joshyfun en gmail.com
Lun Dic 14 23:56:36 CET 2009


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





More information about the Lazarus-es mailing list