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 :
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é :
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
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.
Partager