IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

TzQUery et langue arabe


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut TzQUery et langue arabe
    Bonjour,
    Après multiples recherches (et il y en a des topics), je suis toujours bloqué par la prise en compte de la langue arabe.

    J'ai une base de données avec des informations en arabe, qui ne sont pas reconnus dans Delphi que ce soit dans une grid, dans un txtedit ou un panel...(j'ai des ???? à la place de l'arabe), et inversement dès que j'enregistre des informations en arabe dans Delphi, ils ne sont pas reconnus ensuite dans la base de données (copie de données dans mon grid par exemple, je passe un enregistrement de la sorte QRY.ApplyUpdates et j'ai des ????? dans ma base).

    Je pense que le soucis tourne autour de Delphi qui ne fait pas de traitement nécessaire.

    Comment résoudre le problème ? J'ai fait le tour des topics existant en vain...

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Delphi Combien ?
    Quelle SGBD ?

    Pour Delphi 3 à 2007 :
    Soit tu changes la langue de l'OS !
    Soit tu changes la langue des applications ANSI
    Soit tu utilises l'ARABIC_CHARSET de la font choisi !
    Joue aussi avec le BiDiMode, voir Inclusion de fonctionnalités bi-directionnelles dans les applications
    il faut utiliser une Fonte contenant de l'Arabe évidemment
    Ainsi, tu stockeras dans tes tables ANSI un charabia pour l'habituel Latin1 mais qui devrait être correcte en Arabe !

    Et sinon, on le répète depuis la sortie de Delphi 2009, tout l'enjeu de L'UNICODE pour la gestion multilingue\multi-alphabet

    Evidemment fait tes tests avec des Fichiers pour commencer
    Une fois que cela fonctionne en fichier à la main (un fichier Ini par Exemple)

    Tu essayeras avec TzQuery qui lui aussi peut avoir des limitations, est-ce que le TzQuery gère l'Unicode et selon la DB n'arrive pas à remonter ce qu'il faut ?
    Regarde si TzQuery fourni un AsWideString
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Je suis sous delphi 2010 justement

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu utilises D2010, c'est donc un bug du TZQuery ou alors une mauvaise configuration du SGBD

    Ton SGBD doit utiliser un stockage en UTF8
    Ton Zeos doit utiliser un CharSet de connexion aussi en UTF8
    lit ce sujet ZEOS+Firebird 2.1 + UTF8 D2010

    Tu utilise bien une fonte qui affiche l'arabe comme Tahoma ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Tu utilises D2010, c'est donc un bug du TZQuery
    lit ce sujet ZEOS+Firebird 2.1 + UTF8 D2010
    Je ne sais pas si ce bug a été corrigé , de toute façon il faut déjà la version SVN 7.0 des ZEOSDBO . Je pense que la branche "testing-egonhugeist" corrige justement le bug cité , mais je ne l'ai pas encore testé .
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Le SGBD est bien configuré il n'y a pas de problème de ce côté là.
    Ensuite où règle t-on le charset pour le Zeos, je n'arrive pas à le retrouver.
    Le font est bien en Tahoma.

    Petit précision en mettant la requête : set names utf8 je n'ai plus de ????? mais des caractères un peu plus ressemblant du genre "ظ‚ط³ط·ظ†ط·ظٹظ†" au lieu de "قسطنطين", on s'en rapproche, de plus j'ai également mis dans les options régionales de windows dans options avancées dans langue pour les programmes non unicode, la lange Arabe (Algérie).

    Ensuite au niveau de la version du Zeos, mon patron a réussi à faire marcher l'arabe sur son pc avec la même install de Delphi que moi. Il est actuellement à l'étranger, donc je ne peux pas voir avec lui pour savoir comment résoudre le problème.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Normalement une application D2010 n'est plus une application ANSI, j'espère que cela n'impacte plus Delphi comme cela le faisait en D7 !
    Vu que l'on peut mélanger Français Arabe Russe ... dans un même TEdit, j'espère vraiment que "langue pour programmes non unicode" n'a pas d'effet !
    Si c'est un gros Bug !

    Tu as plus de caractère que nécessaire, hum, un UTF8 non converti ?
    Une autre solution, un peu pénible, je prévient !

    essaye aussi SET CHARACTER SET `utf8`

    Tu n'as toujours pas indiqué le SGBD utilisé ? Est-ce du MySQL ?
    Il semble que DBExpress + MySQL, il y a les mêmes soucis et tout ce joue en trouvant la bonne méthode de configuration,
    il y a bien des membres qui ont été confronté à cela ?
    Tient ce sujet : Lazarus + Zeos 7 + MySql
    Zeos Portal : Delphi 2010 + MySQL + UTF8 - Delphi (XE) + MySQL + Latin1 Troubles and Solutions




    Dommage, MySQL gère très bien les CharSet
    MyDAC de Devart\CoreLab fonctionne bien à ce sujet aussi
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Oui oui tout à fait c'est du MySQL.
    Le même problème avec SET CHARACTER SET utf8.

    Par contre petite amélioration, j'ai donc laissé mes options dans langues régionales, j'ai enlever le set names utf8 dans Delphi. J'ai copier dans delphi une valeur arabe par exemple سكيكدة je l'a sauvegarde, dans HeidiSQL, ma valeur devient ÓßíßÏÉ.
    Et quand je réouvre mon appli Delphi, ma valeur est bien en arabe c'est à dire سكيكدة alors que dans ma base elle reste ÓßíßÏÉ. Intéressant, non ?

    Ps: j'ai essayé la méthode où on met character, names... en utf 8 mais je me retrouve avec des cacractères spéciaux en remplacement des ?????

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Oui c'est de l'UTF8
    HeidiSQL, je connaissais pas, j'utilisais MySQL Query Browser (coder en Delphi 2005 + TNT) ou PHPMyAdmin

    Tes Tables sont bien en UTF8, dans MySQL, tu as le charset du SGBD par défaut, de la connexion, et si je me souviens bien, le charset est configurable par colonne

    On dirait que ta DB est en Latin1 et que Delphi croit qu'elle est en UTF8, tordu mais après tout, où je travaille, cela a été le cas sur Sybase\DBX entre cp863 et window1252 pendant au moins 5 ans, tout ce qui utilise le DSN voyait du 1252 mais les outils Sybase eux voyait du cp863
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Ma base est bien en utf8 je viens de vérifier tout est bon.

    En gros quand, dans mes options régionales, je met arabe pour les programmes non unicode, Delphi arrive à lire de l'arabe à partir d'une sorte de latin dans HeidiSQL.

    Alors que quand je met français, Delphi me sort des ????? à la place de l'arabe dans HeidiSQL, et du latin à la place du latin (enfin l'autre écriture particulière).

    Là je colle

    Personne ne peut m'aider ?

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Je ne sais pas si cela peut aider à avancer, mes les accents sont très bien pris en compte à l'affichage de la base dans Delphi.
    Mais pas les cacratcères comme l'arabe.

    De plus quand je passe une requête avec comme condition where nom_de_colonne = 'نيس' ou même nom_de_colonne ='???????', je n'ai aucun résultat

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    J'ai résolu en partie mon problème.

    Donc j'ai bien utiliser le set characet set utf8 mais ensuite dans l'affichage j'ai utiliser un utf8decode. Voici un bout de mon code qui parlera mieux je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      QRY_MDA.Close;
      QRY_MDA.SQL.Clear;
      QRY_MDA.SQL.Add('SET CHARACTER SET utf8');
      QRY_MDA.ExecSQL;
      QRY_MDA.SQL.Clear;
      QRY_MDA.SQL.Add('select * from air_oaci');
      QRY_MDA.Open;
     
      Textedit.Text := utf8decode(QRY_MDAOACI_Nom3.Value);
    end;
    Maintenant il faut que j'arrive à appliquer ce utf8decode par exemple à un dbgrid, je vais me pencher sur ça

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    comme je cela a été évoqué dans le sujet DBGrid et caractère UTF8 ou que j'avais proposé dans le sujet Probleme avec l'Unicode et Non Unicode dans la meme table en utilisant OnGetText sur le TField et pas juste sur la TDBGrid
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 80
    Points : 42
    Points
    42
    Par défaut
    Super, en plus tu m'avais déjà donner ses liens. Je te remercie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sauvegarde langue arabe et Tzquery
    Par benn13 dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/06/2012, 14h15
  2. Prise en charge de la langue arabe
    Par yousseffst dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 13/03/2006, 11h33
  3. [WD9] Importation DB Access en langue arabe
    Par brizi dans le forum WinDev
    Réponses: 1
    Dernier message: 28/02/2006, 11h45
  4. problème langue arabe
    Par infoseb dans le forum Oracle
    Réponses: 2
    Dernier message: 17/10/2005, 17h44
  5. accents et langue arabe et chinoise
    Par localhost dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 25/02/2005, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo