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 :

Affichage des caractères arabes


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut Affichage des caractères arabes
    Bonjour,

    J'ai developpé une application sous delphi7,windows 7 32bits. l'application se connecte à uen BD oracle11g.

    J'ai essayé d'insérer des données en arabe mais les caratères ne s'affichent pas correctement mais les données en arabe déja saisies(via sqldevelopper) s'affichent correctement

    La configuration est la suivante :

    BD oracle 11.2.0.4 en UTF8
    client 11g
    os windows 7

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Le sujet n'est pas dans la bonne rubrique, Delphi 7 n'est pas .NET

    D'ailleurs Delphi 7 ne produit pas de module UNICODE, le module ne supporte qu'un seul CharSet ANSI à la fois

    Si cela affiche des ???? à la place de l'arabe, change le charset dans les champs concernés
    Voir TFont.Charset / TFontCharset = ARABIC_CHARSET

    Faut espérer que ta bibliothèque gère correctement les données reçues, tu as indiqué la base ORACLE mais pas la lib !
    BDE ? ADO ? DBX ? ODAC ? ...

    Tu peux changer aussi dans les options de Windows le CharSet de toutes les applications ANSI, tu perdras donc le français, cela peut être pénible

    Tu peux aussi utiliser les composants TMS TNT Unicode qui gèrent cela !

    Ou passer sur Delphi XE10 qui correspond à Delphi 22...

    Chercher sur le forum et la , c'est une question très commune !


    Exemple de sujet

    Insertion des champs écrits en arabe dans une base de données avec c++ builder
    Probleme avec l'Unicode et Non Unicode dans la meme table
    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
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    merci pour la réponse mais ca marche toujours pas.

    Merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    À vue de nez cela peut venir du fait que tes données saisies soient en UTF-16 mais ta base de données en UTF-8

    Ne touche pas au charset comme le conseille ShaiLeTroll: c'est un truc obsolète des années 95 et il faut le laisser à "DEFAULT_CHARSET"

    Ensuite cela dépend de la conception de ton programme. Soit
    • Tu laisses tout en UTF-16. Et avoir/ faire une moulinette pour tout convertir en UTF-8 pour les interactions avec ta base.
    • Tu fais ton cœur de logiciel en UTF-8. Les interactions avec ta base seront transparents. Mais il faudra quand même avoir/ faire une moulinette pour convertir les données/ saisies utilisateurs en UTF-8.


    Quelle que soit la solution il faudra utiliser les System::UnicodeString et mapper dans les options de ton projet _TCHAR à wchar_t.

    Et petit rappel: UTF-16 -> System::UnicodeString, UTF-8 -> char* en C++

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Bonsoir,

    je ne sais pas du tout si ça a un rapport (et je ne connais rien aux BdD), mais ce matin (hasard, hasard !) je lisais des articles concernant Unicode et un passage m'a attiré l'œil à propos d'Oracle et un problème de conversion.

    Alors comme je vois qu'ici ça cause Oracle, Unicode et conversion, ben je vous passe le lien et vous étudiez le truc, moi ça me dépasse...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    j'ai crée une nouvelle table pour faire les tests mais c'est le même problème que se soit avec defaul ou arabic character.
    J'ai également modifié ,dans regedit, nls_lang du client à french_france.utf8 mais toujours le même problème.

    Merci

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    Dis-nous exactement comment tu fais tes tests au lieu d'écrire un laconique "ca marche pas"

    Est-ce que tu fais du code? Tu passes par un logciel? Direct la base de données?

    Quel est l'encodage de tes données en entrée: UTF-16, UTF-8, autre ...?

    Normal que les charsets ne fonctionnent pas: tu ne travailles pas en MBCS

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Désoléé,

    pour tester que les caractères arabes sont insérés correctement dans la base de données, j'ai crée une form sous delphi :

    j'ai mis un edit configuré arabic_char(font), un bouton enregister,.

    La connection à la base de données via ODBC (pilote d'oracle client 11g 32 bits).

    A la saisie , la donnée en arabe dans le edit s'affiche correctement mais stockée incorrectement dans la base de données.

    nls_lang du client 11g par défaut (FRENCH_FRANCE.WE8MSWIN1252 ).

    Merci

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    Il faut tester les 3 encodages [désolé je ne programme pas en delphi mais en C++ ]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var
      test1: AnsiString;
      test2: WideString;
      test3: AnsiString;
    begin
      test1 := 'azertyiop12345';
      test2 := WideString('');
      test3 := Utf8Encode(test2);
     
    //Write test1
     
    //Write test2
     
    //Write test3
     
    end;
    test2 := WideString('حبيبي والحاسوب');, l'encodage ne passe pas avec la balise code

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    ca marche bien en configurant nls_lang à french_france.AR8MSWIN1256.
    Ca fonctionne également avec delphi 2010 et sans apporter de modifications ni sur le client et ni sur le font des champs concernés à arabic_char dans l'application.

    Merci

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,

    le problème des caractères arabes est réglé en passant vers delphi 10.

    Merci

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

Discussions similaires

  1. [ZF 1.7] l'affichage des caractére arabe avec tmx dans zf
    Par ghamrired dans le forum Zend Framework
    Réponses: 4
    Dernier message: 20/01/2009, 18h30
  2. Réponses: 1
    Dernier message: 31/12/2008, 10h04
  3. [XSL-FO][FOP] problème d'affichage des caractère arabe
    Par MedNaceur dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 27/11/2008, 18h43
  4. Problème d'affichage des caratères non UTF-8
    Par tit_pierre dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2006, 00h11
  5. [SQL-Server] problème d'affichage des caratères lus en base
    Par Invité dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 31/01/2006, 15h05

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