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 :

Un petit souci avec le caractère "€"


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut Un petit souci avec le caractère "€"
    Ola,

    Voici le problème :

    Je dispose en local d'une base de données MySQL 5.1 dont une table comporte des enregistrements dans lesquels apparait régulièrement le caractère "€".

    Si j'utilise un TSimpleDataset et un TDBGrid pour accéder à cette table, je vois sans problème mon signe "€".

    Si j'accède à la même table en passant par un serveur Datasnap, mon signe "€" se transforme à l'affichage en quelque chose qui est de l'ordre du serbo-croate , à savoir : "ÿ ¬". Je précise également que tous les autres caractères accentués apparaissent tout à fait normalement.

    Si un forumeur sympa avait une idée sur l'origine de ce "binz", cela m'aiderait beaucoup ?

    Merci.



    JJE

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Jean-Jacques Engels Voir le message
    Je dispose en local d'une base de données MySQL 5.1 dont une table comporte des enregistrements dans lesquels apparait régulièrement le caractère "€".
    Quel est le jeu de caractères utilisé par MySql pour cette table ?
    Citation Envoyé par Jean-Jacques Engels Voir le message
    Si j'accède à la même table en passant par un serveur Datasnap, mon signe "€" se transforme à l'affichage en quelque chose qui est de l'ordre du serbo-croate , à savoir : "ÿ ¬". Je précise également que tous les autres caractères accentués apparaissent tout à fait normalement.
    Il faudrait en savoir un peu plus côté DataSnap : Quels sont les composants utilisés ?
    Par exemple, y a-t-il un TDSTCPServerTransport ? comment est paramétrée sa propriété Filters ?
    Voir également les autres composants ; l'un d'eux doit utiliser une table de transcodage inadéquate pour le symbole "€"...
    Voir également s'il n'y a pas un mix de widestring et ansistring...
    --
    Philippe.
    Philippe.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut
    Bonjour Philippe,

    Merci tout d'abord pour l'intérêt que tu portes à mon problème.

    Concernant la table qui pose problème, le jeux de caractères est utf8_general_ci

    Du côté serveur Datasnap, celui-ci expose la connexion database par une méthode GetConnection qui renvoi un TDBXConnection, soit :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    unit DSServerMethods;
     
    interface
     
    uses
      SysUtils, Classes, DSServer, DBXMySQL, DB, SqlExpr, DBXCommon;
     
    type
      TServerMethods = class(TDSServerModule)
        Interim: TSQLConnection;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        function GetConnection: TDBXConnection;
      end;
     
    implementation
     
    {$R *.dfm}
     
    uses
      fDSMainForm;
     
    { TServerMethods }
     
    function TServerMethods.GetConnection: TDBXConnection;
    begin
      with Interim do begin
        if not Connected then Open;
        Result := DBXConnection;
      end;
    end;
     
    end.
    Sur le module TServerContainer, je dispose des trois composants suivant :
    • TDSServer
    • TDSTCPServerTransport
    • TDSServerClass

    J'ai effectué toutes les liaisons entre ces trois composants et ai conservé toutes les valeurs par défaut. La communication entre serveur et client fonctionne tout à fait correctement.
    Concernant TDSTCPServerTransport, je n'ai ajouté aucun filtre.

    Du coté client, je dispose d'un TSQLConnection dont la propriété Driver est positionnée sur Datasnap. Je récupère la connexion Database en affectant à la propriété ServerConnection du driver Datasnap la valeur "TServerMethods.GetConnection".

    Chaque table du coté client est ensuite accessible via les composants :

    • TSQLDataset
    • TDatasetProvider
    • TClientDataset
    • TDataSource (pour les tables éditables)


    A priori, tout fonctionne comme je le souhaite excepté pour ce caractère €.

    Tu parles de tables de transcodage, y ai-je accès ? Si oui, comment et où ?

    En attendant une réponse de ta part, je regarde pour un éventuel problème de mix de widestring et ansistring.

    Voici le contenu de quelques variable de MySQL :

    character_set_client = utf8
    character_set_connection = utf8
    character_set_database = utf8
    character_set_filesystem = binary
    character_set_results = utf8
    character_set_server = latin1
    character_set_system = utf8
    character_sets_dir = D:\Program Files\MySQL\MySQL Server 5.1\share\charsets\



    JJE

  4. #4
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut
    Ola,

    Après 15 jours de recherche (si, si ), et avec l'aide d'un collègue, j'ai finalement trouvé :

    Du côté serveur, la propriété TSQLConnection.ServerCharSet devait contenir la valeur "UTF8" afin d'envoyer les champs de données au format WideString et non au format AnsiString.



    JJE

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/09/2005, 18h29
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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