[Lazarus-es] Error al leer charset ISO8859_1 en Firebird 2.1.3con Lazarus

JoshyFun joshyfun en gmail.com
Mar Dic 1 23:12:53 CET 2009


Hello Ismael,

Tuesday, December 1, 2009, 8:40:51 PM, you wrote:

ILDGa> Si ya lo había probado y funciona, se me olvidó
ILDGa> comentar, pero mi duda es la 
ILDGa> siguiente.
ILDGa> No puedo cambiar del tipo de charset de las BD ya que son muchas y tengo
ILDGa> muchos sistemas corriendo sobre Visual Basic 6, ahora el decir que el
ILDGa> charset  = utf8 en las conexiones de Lazarus tengo las siguientes dudas:
ILDGa> 1.- No me traerá problemas en la BD al ser esta realmente ISO8859_1 la
ILDGa> configuración de la BD y no UTF8.

No debería (todo hay que probarlo). Lo que pasa es que estás
entendiendo mal lo que hace el "charset". Este indica en que "idioma"
se va a realizar la transferencia de datos entre firebird y la
aplicación, esto es (resumiendo):

1) NONE : No hay conversión de ningún tipo, la aplicación recibe los
datos tal y como están almacenados en la base de datos. Si un campo es
ISO8559-1 recibirás un 8559-1, si es un ASCII, pues ASCII, si es otra
cosa, pues otra cosa.
2) ISO8559-1 (win1252) : La información de todos los campos se
recibirá en ISO8559-1, si el campo contiene algún carácter no
disponible en ISO8559-1 se producirá una excepción ya que se
produciría pérdida de información.

3) UTF-8 : Toda la información de campos será recibida en UTF-8, esto
es, si un campo está definido como ISO8559-1 será convertido a UTF-8 y
enviado a la aplicación.

Por supuesto, la conversión es bidireccional, si envias en UTF-8 algo
que no se puede almacenar en un campo ISO8559-1 se producirá la
excepción igualmente.

Si estableces una "conversación" con la DB en ISO8559-1 tendrás que
definirle una función "convert" (que no sé como se hace la verdad)
para que cuando entregue las strings a los componentes visuales lo
haga en UTF-8 que es lo que necesita Lazarus para mostrar en pantalla.

ILDGa> 2.- Estos datos se verían correctamente después con los soft de Visual Basic
ILDGa> y con FlameRobin con configuración ISO8859_1.

Deberían...

ILDGa> 3.- Para que es la definición del TIBConnection si realmente no le puedes
ILDGa> poner la que tiene la base de datos? Esto no un fallo de dicho componente?

No, es un fallo de "concepto" por tu parte (sin ofender).

ILDGa> 4.- Existe otro componente para manejar conexiones más óptimo que
ILDGa> TIBConnection para trabajar con Firebird?

Hmmm... quizá Zeos, pero me parece muy embarullado. Zeos necesita
urgentemente una limipieza de código y redefinición de estructura
interna (desde mi punto de vista).

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list