PDA

Ver la Versión Completa : Problemas con acentos y otros en firebird


camiz
07-09-2012, 03:24:35
Hola a todos.
he navegado por la red mas de un dia buscando respuestas y todo en vano, espero aqui encontrarlo.

tengo una base de datos hecha en firebird 2.5 asi:

Usuarios
...............
(
CodUsuarios INTEGER NOT NULL,
Fecha DATE NOT NULL,
Hora TIME NOT NULL,
Nombre VARCHAR(50),
Direccion VARCHAR(70),
Barrio VARCHAR(25),
Ciudad VARCHAR(25),
Usuario VARCHAR(20),
Clave VARCHAR(20),
Acceso vARCHAR(10),
PRIMARY KEY (CodUsuarios)
)

lo que pasa es que cuando guardo palabras con acentos, ñ y con dieresis, al mostrarlos en un DBGrid esas palabras se muestran alteradas. alguien me puede dar un ejemplo de como crear la base de datos para estos datos.

ecfisa
07-09-2012, 03:56:40
Hola camiz.

Proba de este modo:

...
Nombre VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
Direccion VARCHAR(70) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
...


Encontrarás más información al pié de esta página y en la búsqueda de los foros. Quizá te puedan interesar estos enlaces también:

ALTER CHARACTER SET (http://www.firebirdsql.org/refdocs/langrefupd25-ddl-charset.html)
CREATE COLLATION (http://www.firebirdsql.org/refdocs/langrefupd21-ddl-collation.html#langrefupd21-ddl-collation-create)
New collations (http://www.firebirdsql.org/refdocs/langrefupd21-collations.html#langrefupd21-tbl-collations)


Saludos. :)

camiz
07-09-2012, 06:01:30
gracias ecfisa por tus respuesta pero el proble persiste.

la base de datos lo he definido

User name: SYSDBA
Password: masterkey
Charset: ISO8859_1
SQL dialect: 3
Page size: 4096

y el resto asi.

Nombre VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,


nose en que esta la falla,

camiz
09-09-2012, 06:07:57
hola amigos. quisiera que me ayuden con este problema.
Lo que para esque estoy trabajando en una aplicacion con Zeos y firebird, lo que pasa es que cuando ingreso datos con acentos o ñ, los caracteres en un DBGrid se muestan diferentes ya no son los mismos.
mi base de datos lo he creado asi:


Username: SYSDBA
Password: masterkey
Page Size: 4096
Charset: ISO8859_1


y la tabla asi.

Usuarios
...............

(
CodUsuarios INTEGER NOT NULL,
Nombre VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
Direccion VARCHAR(70) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
Region VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI,
PRIMARY KEY (CodUsuarios)
)


he visto por ahy unos aportes los cuales aseguran que asi funciona.
pero a mi me sigue dando el mismo problema. se que alguien tiene por ahy la solucion ayudeme que me estoy decepcionando de firebird.
gracias por vuestra ayuda.

Casimiro Notevi
09-09-2012, 10:36:22
No abras otro hilo para tratar el mismo asunto.
Si no lo has resuelto, continua con el mismo.
He unido ambos hilos.
No olvides nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php). Gracias :)

Casimiro Notevi
09-09-2012, 10:40:00
Así tiene que funcionar, no sé si pueda ser una configuración de tu windows.

Yo nunca creo la base de datos con el charset, lo dejo en blanco.
Sólamente declaro los campos que me interesan con su charset y collation, según tu ejemplo:
Nombre VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES_CI_AI

Aunque tampoco uso iso8859_1 sino utf8
Pero incluso sin declarar esos charset, siempre me ha funcionado las ñ,á,é, etc. con la configuración por
defecto, es por lo que comento que pueda ser algo de configuración de tu windows.

camiz
10-09-2012, 04:13:32
gracias casimiro por la obsevacion lo tendre en cuenta, pero como tu dices lo he intentado de muchas formas y sigue el mismo problema quizas sea la configuracion de mi windows, utilizo el XP.
comento que he chequeado por ahy una base de datos de un software tambien hecha en firebird que ahy he introducido datos y se guardan correctamente lo he abierto con IBExpert y no hay nada fuera de lo comun en cambio cuando yo creo una los problemas son los que he mencionado. seguire intentando...

Casimiro Notevi
10-09-2012, 10:04:36
Pero para probar, no leas los datos que ya tienes guardado de antes, crea datos nuevos y esos son los que tienes que leer. Ten en cuenta que los anteriores ya se grabaron "mal".