Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Guardar letras griegas en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=86758)

bulc 29-09-2014 15:50:47

Guardar letras griegas en Firebird
 
Tengo que guardar letras griegas en Firebird usando un TDBMemo. Me deja escribirlas pero las guarda como signos de interrogación ????.
He elegido el conjunto de caractéres ISO8859_I. ¿Alguien me puede ayudar?
Muchas gracias por vuestra ayuda.
Bulc

Casimiro Notevi 29-09-2014 17:03:00

http://www.firebirdsql.org/refdocs/l...-charsets.html

Lo mejor es usar UTF8, con lo que podrás usar el idioma que quieras.

bulc 29-09-2014 21:47:47

¿Dónde defino el character set? ¿En blob o en la tabla?
 
Me viene la siguiente duda. Verás. Tengo el charset ISO5688_I en la tabla. Lo que guardo está en un blob de texto. Dime, por favor, si añado otro blob con el carácter set que me recomiendas y voy pasando todo a ese nuevo blob. En fin, a ver si me puedes dar una pista de como rehacer lo que tengo.
Gracias.

Casimiro Notevi 29-09-2014 22:12:50

Pues no me ha ocurrido nunca, pero puedes probar a crear un campo igual, pero con el character set utf8, pasar todos los datos del campo original a este campo nuevo, luego borras el campo original y renombras el nuevo con el nombre que tenía el original :)

bulc 29-09-2014 22:24:13

Ejecuto ALTER TABLE ADD... pero FB no lo acepta...
 
Bien, he intentado esa propuesta. He abierto la BdDatos y ejecuto:
ALTER TABLE definido
ADD NOTAS BLOB SUB_TYPE 1 CHARACTER SET 'UFO8';

También uso 'UNICODE'.
Me da error en la última palabra.
¿Qué puedo hacer mal?
Gracias por vuestra paciencia.
Bulc

mamcx 29-09-2014 22:28:21

Cita:

Empezado por bulc (Mensaje 482307)
ADD NOTAS BLOB SUB_TYPE 1 CHARACTER SET 'UFO8';

UFO? No que era griego ;)

Casimiro Notevi 29-09-2014 22:31:29

Cita:

Empezado por mamcx (Mensaje 482308)
UFO? No que era griego ;)

:D:D:D:D:D:D

bulc 29-09-2014 22:31:32

Griego intercalando castellano...
 
Bueno, lo que quiero es intercalar griego en castellano.
Tengo entendido que UTF8 equivale a Unicode, ¿es así?
¿Puedo usar CHARACTER SET 'UNICODE'?. Probaré, si acaso...

Casimiro Notevi 29-09-2014 22:35:31

Mira lo que hemos escrito antes y el enlace que puse al principio.

bulc 29-09-2014 22:43:47

Perdona Notevi. Funciona pero sin comillas !!
 
Va perfectamente pero no hay que poner comillas al carácter set.
He usado:

ALTER TABLE definido
ADD EXPLAIN BLOB SUB_TYPE 1 CHARACTER SET UTF8;

COMMIT;

Cierro, buenas noches. Y gracias.

Casimiro Notevi 29-09-2014 22:46:18

Cita:

Empezado por bulc (Mensaje 482314)
Va perfectamente pero no hay que poner comillas al carácter set.

Nadie dijo que había que ponerlas :p
Cita:

Empezado por bulc
He usado:
ALTER TABLE definido
ADD EXPLAIN BLOB SUB_TYPE 1 CHARACTER SET UTF8;
COMMIT;
Cierro, buenas noches. Y gracias.

Entonces se supone que te ha funcionado bien así, ¿no?

bulc 30-09-2014 15:23:47

Se ve griego en edición, pero al guardar desaparece...
 
Nada... sigue igual que antes con ISO8859_I
Mientras se está en edición, las letras griegas se ven OK, pero al guardar aunque el conjunto de caracteres sea UTF8, se convierten en signos de interrogación.
Esperaré a que alguien pueda ayudar. De momento lo dejo estar.
Gracias

Casimiro Notevi 30-09-2014 15:26:32

Cita:

Empezado por bulc (Mensaje 482353)
Nada... sigue igual que antes con ISO8859_I
Mientras se está en edición, las letras griegas se ven OK, pero al guardar aunque el conjunto de caracteres sea UTF8, se convierten en signos de interrogación.
Esperaré a que alguien pueda ayudar. De momento lo dejo estar.
Gracias

Esperaremos a "alguien" :rolleyes:

No nos cuentes cómo estás guardando la información, cómo la presentas, no pongas nada de código, no muestres nada.... Deja que adivinemos, a ver si "alguien" acierta :p

bulc 30-09-2014 15:36:25

Aquí el botón GUARDAR
 
Código Delphi [-]
procedure TPalabras.BitBtn4Click(Sender: TObject); // GUARDAR DATOS
begin
BitBtn2.Enabled:=True; BitBtn1.Enabled:=True; Button2.Click;
if ClientDataSet1.State in [dsInsert, dsEdit] then
begin
       if DataSource1.DataSet.FieldByName('WORD').asString=''  then
          begin
          DataSource1.DataSet.Cancel;
          EsAlta:=False;
          Exit;
          end else
          begin
          If esAlta then PasaUno:=True;
          ClientDataSet1.Post;
          ClientDataSet1.ApplyUpdates(-1);
          //Detrás del Apply porque el nuevo número ya se guardó.
          REVISA_GEN(IBQuery1, PasaUno, Label1);
         end;
     end;
 EsAlta:=False; PasaUno:=False;
 BitBtn2.Enabled:=True;
end;

Por otra parte el campo (llamado Notes) se define con el character set ISO8859_I. Guarda correctamente.
Eso es todo lo que puedo aportar.
Saludos. Bulc

Casimiro Notevi 30-09-2014 16:35:51

¿Hay algún motivo especial para usar un campo BLOB para guardar el texto?

Casimiro Notevi 30-09-2014 16:55:56

He hecho un simple insert y luego un select y verás que se guarda y se lee correctamente.


bulc 02-10-2014 16:22:56

Es que el texto varía mucho en extensión.
 
Verás, te explicaré el porqué. Espero que así se entienda mejor.
Utilizo la base de datos para guardar las palabras 'peculiares' que salen en los crucigramas y autodefinidos.
Entonces las explicaciones que da la RAE son bastante variables en extensión. Por eso uso un blob.
Pero si sugieres otra opción desde un punto de vista más razonado, con mucho gusto lo sopeso. Especialmente si esto depende del tipo de campo, tal como lo expones.
Tal vez así se entienda mejor lo que pretendía.
Muchas gracias por tu interés.
Bulc

Casimiro Notevi 02-10-2014 16:35:36

Por eso te preguntaba, porque si guardas texto, por muy larga que sea la definición de la RAE, no necesitas un BLOB, con un campo varchar normal tienes de sobras. Aunque si te gusta usar un BLOB, no hay problema por ello.

pacopenin 02-10-2014 18:04:48

Cita:

Empezado por bulc (Mensaje 482353)
Nada... sigue igual que antes con ISO8859_I
Mientras se está en edición, las letras griegas se ven OK, pero al guardar aunque el conjunto de caracteres sea UTF8, se convierten en signos de interrogación.
Esperaré a que alguien pueda ayudar. De momento lo dejo estar.
Gracias

Yo tuve un problema que no se si es similar o no. Fué con los componentes ZEOS al pasar de la versión 6 a la 7, y es que en los campos donde guardaba RTFs (era BLOB SUB_TYPE 1 de texto que en la versión 6 y funcionaba perfectamente), al pasar a la versión 7 me guardaba signos de interrogación. Se arreglo al ponerlos de tipo BLOB SUB_TYPE 0 o sea binarios.
No se si te ayudará....

bulc 26-01-2023 13:56:55

A vueltas con los caracteres griegos
 
No he conseguido guardar los caracteres griegos. Y me ha surgido otro problema al listar palabras que empiezan por Á (a con tilde). A pesar de usar un Collate ES_ES_Ci_Ai, no se clasifican alfabéticamente las palabras prescindiendo del acento. (Es el resultado de los diccionario en castellano, no tienen en cuenta los acentos).
Primero usaba la orden:
Código SQL [-]
select * from DEFINIDO where palabro STARTING WITH :Param ORDER BY palabro;
El :Param =A (sin acento).
y en el listado no salía ninguna Ä acentuada. Lo cual tampoco es de extrañar.
Tras consultarlo en la red, lo cambié por :
Código SQL [-]
 SELECT * FROM definido WHERE UPPER( palabro COLLATE ES_ES_Ci_AI) STARTING WITH :Param ORDER BY palabro;
Ahora sí que salen las Á acentuadas pero todas al final del listado, como si fueren Aes especiales.
He llegado hasta ahí. Si llego a avanzar en el tema lo comunicaré.
Saludos y buena suerte.
Bulc


La franja horaria es GMT +2. Ahora son las 06:01:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi