Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
SQLite + acentos y eñes

Buenos días a todos!

He tratado de buscar información al respecto pero la que he encontrado no resuelve mi problema.

Tengo una conexión con Firedac y SQLite, lo que me sucede es que cuando inserto en un campo registros con acentos, otros caracteres como "ñ", me los sustituye por símbolos extraños dentro de la tabla de la BD, como rombos, signos de interrogación, etc.

He probado cambiando las opciones de OpenMode y StringFormat de la conexión pero ninguna de ellas me ha resuelto este problema.

La inserción la hago desde código Deplhi hacia SQLite.

Alguien se ha topado con este problema que me pueda echar una mano?.

Gracias de antemano!
Responder Con Cita
  #2  
Antiguo 27-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Usas utf8 en tu programa delphi?
Responder Con Cita
  #3  
Antiguo 27-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Hola, los parámetros básicos de la conexión son los siguientes:

Código Delphi [-]
  conexion.params.Add  ('DriverID=SQLite');
  conexion.params.Add  ('Database=mibase.s3db');
  conexion.Params.Append('OpenMode=CreateUTF8');
Responder Con Cita
  #4  
Antiguo 27-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Lo he probado creando los parámetros en tiempo de ejecución como lo expuesto anteriormente, como directo en las parámetros del componente desde el inspector de Delphi.
Responder Con Cita
  #5  
Antiguo 27-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y los datos que guardas son utf8 o iso8859?
Responder Con Cita
  #6  
Antiguo 27-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Bueno, la verdad es que eso no lo tengo claro, estoy ejecutando una consulta de prueba desde Delphi con la sintaxis siguiente:

Código Delphi [-]
consPrueba.Close;
consPrueba.ParamByName('vCliente').Value := 'Jesús Alarcón';
consPrueba.ExecSQL;

Básicamente actualizo un registro con ese nombre, me parecía algo normal, pero desde Delphi tengo el problema, obviamente si lo hago dentro de un editor de SQLite dentro de la propia BD me escribe correctamente los caracteres.
Responder Con Cita
  #7  
Antiguo 28-05-2019
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué versión de Delphi usas?

// Saludos
Responder Con Cita
  #8  
Antiguo 28-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
10.2 Tokyo
Responder Con Cita
  #9  
Antiguo 28-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Comprueba qué "encoding" tiene.


PRAGMA encoding;
PRAGMA encoding = "UTF-8";
PRAGMA encoding = "UTF-16";
PRAGMA encoding = "UTF-16le";
PRAGMA encoding = "UTF-16be";

In first form, if the main database has already been created, then this pragma returns the text encoding used by the main database, one of "UTF-8", "UTF-16le" (little-endian UTF-16 encoding) or "UTF-16be" (big-endian UTF-16 encoding). If the main database has not already been created, then the value returned is the text encoding that will be used to create the main database, if it is created by this session.
The second through fifth forms of this pragma set the encoding that the main database will be created with if it is created by this session. The string "UTF-16" is interpreted as "UTF-16 encoding using native machine byte-ordering". It is not possible to change the text encoding of a database after it has been created and any attempt to do so will be silently ignored.
Once an encoding has been set for a database, it cannot be changed.
Databases created by the ATTACH command always use the same encoding as the main database. An attempt to ATTACH a database with a different text encoding from the "main" database will fail.
Responder Con Cita
  #10  
Antiguo 28-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
El pragma de la base es UTF-8
Responder Con Cita
  #11  
Antiguo 28-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Rectifico, el econding que devuelve el PRAGMA es UTF-8
Responder Con Cita
  #12  
Antiguo 29-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues entonces, por algún motivo, estás enviando texto que no es utf8 a la base de datos.
¿Has probado desde un software externo? (sqlite studio admin, sqliteman, etc.?
Responder Con Cita
  #13  
Antiguo 29-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Cuando ejecuto dentro del Admin de SQLite funciona bien, bueno, seguiré revisando a ver que puede ser, por el momento he optado por eliminar los acentos y otros caracteres del string que paso desde Delphi.
Responder Con Cita
  #14  
Antiguo 29-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver si estás enviando ansistring('ñÑáéíóú') en lugar de string('ñÑáéíóú')
Responder Con Cita
  #15  
Antiguo 30-05-2019
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
En realidad opté por quitar los acentos, me he topado con varios quebraderos de cabeza con sqlite y este tema. más adelante cambiaré el motor de bases de datos. Gracias a todos por sus atenciones.
Responder Con Cita
  #16  
Antiguo 30-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vaya, qué raro, yo llevo 7 años usando sqlite para android y nunca he tenido problemas con eso.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Lazarus: TStringList.LoadFromFile error cuando la ruta tiene eñes/acentos euMesmo Lazarus, FreePascal, Kylix, etc. 12 07-03-2015 01:19:38
problema con eñes y tildes jarto MySQL 1 28-04-2005 16:01:47
Acentos y eñes llonigualker Varios 3 20-11-2004 15:25:35
UPPER, UpperCase con eñes, tildes ... Tomás Firebird e Interbase 3 15-01-2004 19:24:24
Ordernar a acentos y eñes (tablas dbase) Jose_Pérez SQL 2 17-11-2003 16:49:20


La franja horaria es GMT +2. Ahora son las 16:14:23.


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
Copyright 1996-2007 Club Delphi