PDA

Ver la Versión Completa : Problema con caracteres especiales en la aplicación


jasmad
01-06-2012, 00:32:00
hola a todos,

estoy desarrollando un sistema con base de datos propia, este importa datos de la base de datos de otro sistema, las dos bases tienen charset none
al importar datos tanto en la source como en la destino(la de mi sistema) se pueden ver los caracteres especiales como tildes y ñ's pero en la aplicacion muestro los datos importados por ejemplo en un grid y muestra un signo de pregunta donde deberia haber una tilde, ñ o cualquier caracter especial.(ej. jiménez se muestra jim?nez)
intenté cambiar el charset de mi bd a win1252 e ISO8859_1 para ver si podría ser la solución pero el resultado siempre es el mismo.
como las dos bases estan iguales supuse que seria problema en la aplicacion, entonces establecí la propiedad del componente de conexion
charset = 'win1252'
charset = 'ISO8859_1'
pero sigue mostrando el signo de pregunta en vez de los caracteres especiales y cuando trato de filtrar con caracteres especiales salta la exepcion
"arithmetic exception numeric overflow or string truncation cannot transliterate character between character sets"

con la propiedad charset en 'NONE' del componente no me salta la excepcion pero no reconoce los registros que tengan caracteres especiales o si filtro con '?' tampoco me los muestra

estoy usando componentes IBDAC para base de datos que son muy parecidos a los ibx y zeos
en lazarus0.9.31 version codetyphon 2.50

alguien tiene alguna idea de porque me esta pasando esto porque yo he visto que esta excepcion es de base de datos

y una vez mas mis respetos a todos los miembros de esta grandiosa comunidad y gracias por la ayuda

Casimiro Notevi
01-06-2012, 00:46:35
estoy desarrollando un sistema con base de datos propia
¿Cómo es ese sistema de bases de datos?, ¿es conocida?, ¿qué nombre tiene?, ¿cómo es?, ¿es relacional?, ¿es libre?, etc.

jasmad
04-06-2012, 19:18:01
hola
el motor de base de datos que estoy usando es firebird 2.5

Casimiro Notevi
04-06-2012, 20:23:03
Bien, es que como decías que era una BD "propia", pensé que habías creado una.

O sea, que tienes dos bases de datos firebird, en una puedes ver las Ñ,á,é,í,ó,ú y en la otra no.
¿Las dos son firebird 2.5?
¿Es una copia o es otra BD a la que has importado los datos?
Si es otra BD, ¿la has creado igual que la otra?: ISO8859_1, UTF8, etc.
¿El programa para acceder a la BD es el mismo en ambas bases de datos?, ¿configurado igual?

jasmad
04-06-2012, 22:29:05
jaja ojala algun dia llegue a ese nivel de crear un motor de bd...
las bases son diferentes o sea no tienen la misma estructura ni se parecen;
las bases de datos tienen un programa diferente cada una;
el charset de las dos bds es NONE;
son dos bases de datos firebird que corren en firebird 2.5 ;
eesn las dos desde el explorador de base de datos(ibexpert) veo las Ñ,á,é,í,ó,ú
en mi programa que lee mi base datos es donde no se logran ver los acentos que si se pueden ver desde ibexpert en vez de la letra se muestra un signo de pregunta '?'

Casimiro Notevi
04-06-2012, 22:41:35
¿Entonces puede ser alguna configuración de windows?

mightydragonlor
04-06-2012, 23:25:50
Trata lo siguiente, convierte una cadena de texto entrante a UTF8 con la función AnsiToUTF8 y nos cuentas si se arregla, así sea con solo una cadena, luego vemos el resto.

jasmad
05-06-2012, 16:21:33
no se en que parte de la configuracion se puede afecatar la vista de la aplicacion...
en el evento cellclick del grid hago un showmessage del AnsiToUTF8(campo_del_dataset) y me muestra los caracteres especiales :)-,
pero establesco la opcion del componentente de conexion de charset a utf8 y no pasa nada :´(

mightydragonlor
05-06-2012, 19:09:10
Haz intentado poner en la conexión de Lazarus el Charset NONE?

jasmad
06-06-2012, 00:42:08
si esa es la que tiene el componente de conexion asignada tambien probe con win1252, ISO8859_1 y utf8

jasmad
12-07-2012, 19:19:05
muchas gracias a todos ustedes pude resolver el problema, con el consejo de mightydragonlor lo que hice fue que al momento de la importacion llamar esta funcion con los campos que fueran varchar y mi aplicacion ya muestra los acentos correctamente eso si en la base de datos se muestra otra cosa pero la aplicacion lo traduce supongo
gracias