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

Lazarus Pascal Discussion :

Accents sous MySQL


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut Accents sous MySQL
    Bonjour à tout le monde.
    Je fais de la programmation en amateur et j'aimerais construire une application utilisant une base de données sur les animaux pour ma fille en BTS GPN.
    Le problème des accents n'est pas nouveau au vu des posts que l'on trouve tant en anglais qu'en français. Je n'ai pas été capable de faire fonctionner les solutions proposées et je sollicite votre aide. Voici les versions des logiciels que j'utilise :
    Windows XP3.
    Lazarus #:0.9.30 i386-win32/win64.
    FPC 2.4.2
    Wampserver 2.1 (MySQL 5.5.8 et PHPMyAdmin 3.3.9)
    Le problème ne semble pas venir de MySQL car la consultation au moyen de la console fait un usage correct des accents. La base de données que j'ai entrée utilise la page de code utf8 et utf8_general_ci pour la collation.
    Dans un premier temps j'ai utilisé les composants SQLdb livrés avec Lazarus pour constituer une application conforme à celle proposée à :
    http://wiki.lazarus.freepascal.org/MySQLDatabases (Cf. fichier joint pour la feuille)
    Une erreur surgissait au moment de la sélection d'une table dont le nom comportait une lettre accentuée. Différents messages mettaient en avant les composant ZEOS, que j'ai installés. Amélioration, je peux maintenant sélectionner une table dont le nom comporte une lettre accentuée et la liste des champs est écrite correctement avec les accents. J'ai également ajouté les propriétés conseillées au composant ZConnection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    character_set_client=utf8_general_ci
    character_set_connection=utf8_general_ci
    character_set_database=utf8_general_ci
    character_set_results=utf8_general_ci
    character_set_server=utf8_general_ci
    character_set_system=utf8_general_ci
    collation_connection=utf8_general_ci
    collation_database=utf8_general_ci
    collation_server=utf8_general_ci
    Codepage=utf8
    Mais quand je veux lancer une requête du genre 'select * from félinés' elle est refusée car comportant un caractère erroné :
    SQL Error : Invalid character string : 'f\xC3'
    La sélection des bases ou des tables se fait par TComboBox, la requête est entrée par TEdit, ces trois composants ont des polices en UNICODE.
    Si je copie/colle le nom de la table à partir du TComboBox la même erreur est retournée.
    Si j'utilise la fonction utf8Encode pour le texte de la requête, elle est acceptée en tant que telle mais le message suivant est envoyé :
    SQL Error: 'Table animaux.fã@linã@s' doesn't exist' (signe @ à la place du signe copyright)
    En ce moment je regarde du côté de la configuration de MySQL, mais je n'en sort pas grand chose.
    Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut Complément
    Re bonjour.
    Je viens d'essayer la requête suivante :
    'show columns from félinés'
    et là cela fonctionne les accents sont acceptés dans la requête le TEDit étant en DEFAULT_CHARSET. Bon j'aimerais recupérer les données et non les titres de colonnes dans le DBGrid!
    Je n'y comprend rien.

  3. #3
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Bonjour,

    Un petit tour ici et par ici pourra vous aidez

    Cordialement,
    Chris

  4. #4
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Par défaut
    Bonjour

    Est-ce que tu as essayé avec des noms de table et de champs sans accents ?

    Cela n'est pas complètement bien supporté par Zeos et SqlDb, et c'est aussi déconseillé si ton application doit être un jour utilisée par des anglophones.

    Pour les données en français, tu sembles avoir fait ce qu'il faut et il ne devrait pas y avoir de problème en UTF-8.

  5. #5
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut
    Bonjour à tous.
    Pour Chris37:
    Je connais le second ici (http://lazarus-fr.espace-malin.fr/in...nees&Itemid=14). J'ai essayé les conseils prodigués mais cela n'a pas marché. Je vais mettre en oeuvre les propositions du premier ici (http://lazarus-fr.espace-malin.fr/in...ntent&Itemid=4). Merci pour ton implication.

    Pour Tintinux:
    Je ne suis pas, par principe, favorable à l'abandon des accents en français alors qu'il existe des paramétrages qui fonctionnent (utf8) pour tout un ensemble d'autres langues. J'ai pourtant effectué cet essai pour valider les principes mis en oeuvre par le programme. Essai dont les résultats ont été conformes à ce que j'en attendais. Les accents apparaîssaient dans les colonnes du DBGrid. Mais ce qui m'ennuie c'est que les tables ont des noms sans accents et que félinés devient felines. Cela m'ennuerait aussi de faire un tableau de correspondance entre les noms des tables avec et sans accents. De plus l'application sera à usage intra familial, avec tout au plus une utilisation à la soutenance du rapport de stage de ma fille. Je ne suis qu'un retraité qui aime bien finir ses phrases par de points virgules, pas plus. Merci pour ton empathie.
    Je promets d'être moins bavard pour les prochains posts.

  6. #6
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Par défaut
    Bonjour

    Je suis tout à fait d'accord avec ta position de principe, mais on n'y peut pas grand chose, à part aider les développeurs de Zeos à améliorer encore leur outil...

    Toutefois, pour ton projet, et à mon humble avis, cela ne me semble pas être une pratique "normale" de créer une table par famille. Je crois qu'il serait préférable de faire une table des familles et une ou plusieurs tables "détail" référençant les familles. Si les "propriétés" des familles sont très différentes, et pour éviter trop de champs inutilisés, il faut peut-être une table très générique (idfamille, idpropriété, valeur). Avec des jointures tu obtiendras tout ce dont tu as besoin.

Discussions similaires

  1. [PHP 5.2] Les accents sous PHP et dans MySql
    Par aspkiddy dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2010, 22h36
  2. [MySQL] Accents & apostrophes sous MySQL
    Par Seidris dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 20/12/2007, 14h06
  3. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19
  4. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

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