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 :

remplir un Dataset avec de l´unicode


Sujet :

Bases de données Delphi

  1. #1
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut remplir un Dataset avec de l´unicode
    Salut tout le monde, j´ai un petit souci avec mon dataset, j´ai crée un dataset, que je voulais remplir avec les données se trouvant dans mon fichier XML, jusque la pas de probleme, mais des lors que je recois des données RUSSE, mon dataset les interprete par les '???', j´utilise Delphi 2009.

    quelqu´un a t il une solution, ou avez vous deja eu ce probleme?

    PS: pour recuperer les données, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cds.fieldbyname('correction').asstring := 'Russe';
    Merci d´avance pour votre aide.

    Eric

  2. #2
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Quel type de données est-ce que tu as définit pour le champ ?

    Si tu veux qu'il contiennent de l'unicode, il faut créer des champs de type ftWideString.
    Le type ftString contient de l'Ansi. C'est le type historique compatible avec les versions antérieures à D2009.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    j´ai testé les 2 variantes, le ftString me donne rien que des '?', alors que
    le ftWideString me donne des lettres chinoises a la place des lettres Russes.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    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 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Quel est l'encodage dans l'entête XML ?

    Cela ressemble à cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    tu utilise un XML via TXMLDocument ?

    J'utilise plus souvent un TClientDataSet lorsque c'est une utilisation entre mes propres applis vers du Web, c'est facile à coder
    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
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    non je n´utilise pas de xml, j´ai un fichier Text, dans lequel je lis des données ecrites en Russe. lorsque je les applique sur Caption ou ListBox etc..., ca marche sans probleme, mais des lors que je veux les mettre dans un dataset pour ensuite les sauvegarder dans une base de données, cela ne marche pas, j´ai tout simplement des '?' a la place des lettres.
    voici l´image de ce que je veux avoir. cela marche mais je ne sais comment.
    Images attachées Images attachées  

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut Merci de vos reponses, mais je viens de trouver le probleme sur la page d´embarcadero, c´est un Bug de delphi, qui a été par la nouvelle mise a jour( le 4e je crois).
    Merci une fois de plus.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    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 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Bon, ce n'est pas clair ton histoire, un coup XML, un coup fichier Texte, bon si c'est résolu par le Patch, c'est bien, il faut avouer que 2009 est la 1ère version UniCode, il logique qu'il y aie quelques bugs !

    En même temps, il faut être sur que le Driver et la DB supporte l'UniCode
    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 chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut en fait j´utilise XML comme base de données et le fichier texte pour prendre les données a sauvegarder.
    Et dans ce fichier texte il ya des Textes ecrits en russe.

    Non je croyais que le probleme etait resolu avec la mise a jour, mais tel n´est pas le cas, car je venais de lire sur la page d´embarcadero qu´ils avaient fixé le probleme. mais force est de constater que non.

    Toujours preneurs pour les aides SVP.

  9. #9
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    mon fichier XML est bien codé en UTF-8 voici l´entete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    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 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Ah, tu utilises un TClientDataSet pour générer le fichier XML
    C'est un truc que je voulais testé aussi, mais ma license XE trial est terminée et ma license 2010 est dans les choux !
    Mon aide sera donc purement théorique

    Tu lit ton fichier comment ?
    Stream ? ReadLn ?

    Est-ce un Fichier Unicode ou UTF-8 ?
    avec ou sans BOM ?

    Utilises-tu des AnsiString, UTF8String, WideString, UnicodeString ou le type par défaut String (unicode en 2009)

    utilise bien ftWideString !
    TWideStringField.AsString utilise AnsiString ou String ?
    As-tu essayé par AsVariant ?

    Peut-être un problème de CodePage ?
    Tu as parlé d'un Bug, URL svp !

    Edit : J'ai testé avec Delphi 6 + TNT Controls
    (on ne peut vraiment comparé mais cela donne un éclairage que du point vue Objet cela fonctionne depuis longtemps !)

    J'ai écrit "Bonjour" ce qui donne "Привет"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClientDataSet.FieldByName('Champ5').AsVariant := UTF8Decode('Привет');
    J'ai bien 6 ? écrit dans mon DBGrid (je suis Ansi évidemment)
    J'ai bien 6 ? dans mon TDBEdit
    J'ai bien "Привет" dans mon TTntDBEdit (Lib TNT pour gérer l'UniCode)
    J'ai bien "Привет" dans mon TTntDBGrid même si c'est un peu capricieux (parfois cela affiche des carrés noirs, parfois le texte comme ça devrait)

    dans le XML
    Par Echappement
    Par UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Champ5="Привет"
    En Delphi 6, cela fonctionne déjà correctement
    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

  11. #11
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut ShaiLeTroll,
    tu as raison, le probleme venait en fait du fait que mon Delphi n´etait pas compatible avec l´unicode, j´ai du copier des caracteres Russes dans mon fichier Delphi et appuyer sur sauvegarder et c´est la qu´il me que je veux savegarder des caracteres UTF-8 et des que j´ai dit oui, alors je n´avais plus de probleme, mais moi je croyais que delphi etait automaquement doté de UTF-8. mais bien est de savoir que ce n´est pas toujours le cas.

    Merci de votre aide tres precieuse.

    Eric

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2009, 16h35
  2. remplir un dataset avec une valeur null
    Par bellak dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/10/2008, 18h49
  3. Réponses: 6
    Dernier message: 30/05/2008, 11h46
  4. Remplir un DataSet avec toute la base
    Par Coocky10 dans le forum C#
    Réponses: 5
    Dernier message: 18/07/2007, 21h44
  5. Comment remplir un Dataset avec toutes les tables d'une db?
    Par Mr_Welby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h29

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