FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Caracteres chinos en Firebird
Hola, antes que nada gracias de antemano por su atencion, mi problema es el siguiente:
Tengo que desarrollar un proyecto cuya interfaz y datos muestren caracteres chinos, 欢迎参加第七届中青年呼吸医师论坛, el asunto de la imterfaz lo tengo resuelto con el delphi 2009, me permite escribir captions en chino. Ahora el problema es con la Base de datos utilizo Firebird, y no he podido almacenar correctamente este tipo de letras, e definido el charset=UTF8, Big5, ChineseBig5, etc.... pero al hacer el commit solo me muestra signos de interrogacion, alguien me puede ayudar?
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes |
#2
|
||||
|
||||
Hola.
Piensa que esta definición la tienes que hacer en dos sitios. Primero en la base de datos, al crearla, y después en el componente Delphi que utilices para conectarte a Firebird. Asegúrate de que tu base de datos tiene los campos con charset unicode (UTF8). Posiblemente tengas que volver a crear la base de datos, con IB-Expert es muy sencillo hacerlo, vas a Tools -> Extract Metadata, y le indicas de hacer un Script con todos tus objetos y datos. Eso te va a generar un archivo de Script para regenerar la base de datos, una de las primeras instrucciones es el CREATE DATABASE, allí asegúrate de modificar el DEFAULT CHARACTER SET para que los campos de texto se creen con Unicode. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
Otra cuestion...
Gracias por tu pronta respuesta... ya he podido almacenarlos en la base de datos.... ahora mi problema es a la hora de tratar de recuperar los datos de la misma.... utilizo los componentes de InterBase que vienen con el delphi 2009, (InterBase Express 12.12), y cuando abro una consulta select en el IBDataSet, IBQuery o IBTable, me da un error que dice 'Division by Zero'; esto solo pasa con estos tres componentes, si utilizo el IBSQL me recupera bien los valores de los campos (respetando los caracteres chinos). pero como sabes este IBSQL, no permite desplazarte con un .First, .Last, .Prior, ni asignarlo como Dataset a un DataSource para ponerlo en una Grid...
estoy intentando recuperarlos con los DBExpress, pero resulta que los Dataset de este son Unidireccional (por ende tampoco puedo ver los datos en una rejilla). Podiras ayudarme al respecto? P.D. el 'Division by zero' solo me lo da cuando jalo los campos VarChar usando el UTF8, si jalo solo campos numericos o de otro tipo, no hay problema
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes |
#4
|
||||
|
||||
Lamentablemente no conozco los IBExpress, pero utilizar dbExpress es muy sencillo (por eso lo utilizo en bastantes programas).
Como bien dices no puedes conectar directamente una grid a un SQLQuery, para hacerlo necesitas poner un ClientDataset de intermediario. NOTA: Necesitas también un DatasetProvider para actuar de intermediario entre el SQLQuery y el ClientDataset. Ambos componentes se encuentran en la pestaña "Data Access". En definitiva el SQLQuery no hace más que leer los datos de la base de datos. Se añade un DatasetProvider para poder pasar esos datos a un ClientDataset. Finalmente se añade un ClientDataset que mantiene esos datos en memoria, por lo que puede hacer movimientos .Next, .Prior, .etc. ..., y por lo tanto se puede conectar a la Grid. Es un poco engorroso puesto que tienes que añadir dos componentes más de lo normal, pero es muy útil, y al final tienes los datos en un ClientDataset que es un componente fantástico, y tiene muchas opciones para manejar tus datos en memoria (aplicar filtros, mantener campos de agregado, etc. ...). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
||||
|
||||
Excelente!
Muchas gracias!!! ha sido una excelente solucion... lo he realizado como me comentas y funciona del uno... probablemente mas adelante te moleste de nuevo, pero de momento ya quedo... dejo mi codigo de conexion por si a alguien le sirve de algo:
* Cnn: TSQLConnection. * DSet: TSQLDataSet. * DSPrvd: TDataSetProvider. * CDst: TClientDataSet. * DSrc: TDataSource. Nueva mente Gracias!!!
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Caracteres chinos en aplicación | Cmmv | Varios | 8 | 07-10-2010 13:20:40 |
Caracteres ilegibles al leer Bold (de texto) de firebird | Yaco | Conexión con bases de datos | 3 | 26-11-2009 16:24:45 |
Uno de chinos | FGarcia | Humor | 0 | 27-08-2008 17:51:12 |
De chinos... | DarkByte | Humor | 0 | 17-05-2004 22:30:40 |
caracteres arabe y Firebird | acertij022 | Firebird e Interbase | 4 | 28-11-2003 15:36:00 |
|