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 04-10-2018
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Pasar ANSI a UTF8

Hola.

Tengo una base de datos con la información de las tablas en ANSI, que mantengo a través de una aplicación desarrollada en Delphi XE2.

Voy a intentar pasar la información a unicode UTF8 y estoy buscando información sobre como hacerlo.

¿Debería utilizar la funcion UTF8encode?, ¿solo para strings?, ¿también para campos blob?, ¿es necesario transformar integers, etc. y, si es asi, como hacerlo?.

Cualquier otro comentario que me aclare sobre los conceptos y detalles a tener en cuenta será bien recibido.

Un saludo y gracias por vuestra atención
Responder Con Cita
  #2  
Antiguo 04-10-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Como tantos otros, ANSI y UTF-8 son formatos de codificación de caracteres y las conversiones tienen sentido donde haya valores de tipo caracter. Delphi incorpora la función System.AnsiToUtf8 que hace la tarea que buscas.

Tal vez exista alguna función en la BD con que trabajas que realice lo mismo, pero deberías especificar cuál es.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-10-2018
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para entender todo esto:

https://www.joelonsoftware.com/2003/...ts-no-excuses/

Cita:
Empezado por jocaro Ver Mensaje
¿Debería utilizar la funcion UTF8encode?, ¿solo para strings?, ¿también para campos blob?
UTF8 es un super-set de ansi. Eso significa, que a menos que tengas ANSI en un codepage especial (o una cadena malformada, con datos binarios o null), deberia pasar directamente. Sin embargo, usa una funcion como dice eficsa para estar seguros. Eso deberia ser dolor de una sola vez.


Cita:
Empezado por jocaro Ver Mensaje
¿también para campos blob?
¿es necesario transformar integers, etc. y, si es asi, como hacerlo?.
Solo para strings. Blobs si y solo si son blobs de string. No pasas a utf8 una imagen jpg!
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 05-10-2018
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Poder: 13
jocaro Va por buen camino
Ante todo muchas gracias por vuestra ayuda.

Cita:
Tal vez exista alguna función en la BD con que trabajas que realice lo mismo, pero deberías especificar cuál es.
La base de datos es sqlite version 3 y como comentas existe un PRAGMA encoding = 'UTF-8', pero no me queda claro si simplemente cargando datos ANSI a una nueva BD con dicho PRAGMA, éstos se cargarían con formato unicode UTF8. Mientras escribo ésto se me ocurre que puedo probar a pasar toda la información de la base de datos ansi a la UTF y mirar a posteriori si los nuevos códigos de los caracteres son distintos.

Un saludo y gracias de nuevo
Responder Con Cita
  #5  
Antiguo 05-10-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ten en cuenta que si no usas ñáéíóú... el resto de caracteres serán iguales en ansi como en utf8.
Responder Con Cita
  #6  
Antiguo 05-10-2018
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por jocaro Ver Mensaje
Ante todo muchas gracias por vuestra ayuda.

La base de datos es sqlite version 3 y como comentas existe un PRAGMA encoding = 'UTF-8', pero no me queda claro si simplemente cargando datos
Sqlite es un RDBMS muy "barebones", no hace nada automatico y asume que se tiene total control de los datos. Un pragma es un valor en runtime que no altera la BD, solo "declara" una opcion, que tiene efecto a partir de su declaracion.

Con respecto a unicode:

https://stackoverflow.com/questions/...g-unicode-data

Lo que significa que debes manualmente pasar la BD a utf8 si antes todo estaba en ascii.
__________________
El malabarista.
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
Guardar archivo txt codificado como ANSI GustavoCruz Lazarus, FreePascal, Kylix, etc. 1 02-02-2014 21:04:47
ANSI, UTF8, unicode en D7 elcigarra Varios 1 10-05-2013 11:50:43
Convertir cadena de ANSI a OEM Lord Delfos Varios 3 26-09-2008 14:23:46
ANSI, UNICODE, Big Endian y UTF-8 ixMike Varios 7 15-08-2007 20:40:52
ANSI-ASCII y caracteres Ñ, ¿, etc. nax C++ Builder 0 27-08-2005 02:44:23


La franja horaria es GMT +2. Ahora son las 17:54:51.


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