PDA

Ver la Versión Completa : Caracteres arabes sql server + delphi 7


drykea
05-08-2013, 13:25:27
Hola a todos.

Tengo una aplicacion con labels que tienen que contener caracteres arabes leidos de una base de datos de sql server.
Utilizo sql server 2000 y delphi 7.

En la base de datos los campos estan bien, pero cuando los leo en mi aplicación me salen as´: '??????'

¿Alguien sabe que puede pasar?
Adjunto el codigo donde los leo:

ADOQIdioma.Locate('Etiqueta','lPrincipal1',[loCaseInsensitive]); //ADOQIdioma = ADOQuery
lprincipal1.BiDiMode:= bdRightToLeft; //lprincipal1 = label
lPrincipal1.Font.Charset := ARABIC_CHARSET;
lPrincipal1.caption := ADOQIdioma.FieldByName('Traduccion').asString;

He buscado por ahí, pero no he encontrado nada que me sirva.

Gracias de antemano

Ñuño Martínez
05-08-2013, 15:40:39
No tienes instalado Unicode (http://es.wikipedia.org/wiki/Unicode), o no lo tienes correctamente configurado, o tu aplicación no es capaz de gestionar cadenas Unicode, o no realizas la codificación/conversión de cadenas apropiada.

drykea
05-08-2013, 18:37:41
Gracias, por tu respuesta.

¿Puedes decirme como compruebo si lo tengo instalado o como instalar lo?

Ñuño Martínez
08-08-2013, 13:42:05
Eso es un tema del sistema operativo, Windows en tu caso. Para comprobarlo, simplemente abre un editor de texto (mejor en un "Office") y escribe en él con los abecedarios que necesites y con la misma tipografía que usas en el programa. Si no sale, es que la tipografía que usas no tiene soporte UNICODE o no lo tienes instalado. Para instalarlo debería bastar con obtener la tipografía completa, con el soporte UNICODE, y copiarla en el directorio "fonts" (si no recuerdo mal, porque hace mucho que no lo hago en Windows), aunque creo que con pulsar sobre el archivo te pregunta si quieres instalarla.

Si ya la tienes instalada (es decir, puedes escribir correctamente en el editor de texto), mira en la configuración del gestor de bases de datos, para comprobar la codificación que usa en los tipos de texto (para UNICODE debería ser UTF-8, UTF-16 ó UTF-32).

Luego comprueba si en el programa estás usando el tipo de dato correcto, que en Delphi 7 debería ser, al menos, WIDESTRING. No recuerdo si esa versión tiene UNICODESTRING o si fue un añadido posterior. En esta página (http://docwiki.embarcadero.com/RADStudio/XE3/en/String_Types) tienes más información; es para el Delphi XE3, pero la mayor parte de las explicaciones deberían servirte igual, y puedes tirar del hilo desde ahí.