Bonjour,

J'explicite le sujet.
Je travaille avec delphi 10.4 sur une base mariadb/mysql.
J'ai constaté avec un peu d'étonnement que si je fais une requête du genre :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
DROP TABLE IF EXISTS util;
CREATE TABLE `util` (
  `U_nom` CHAR(30) NOT NULL DEFAULT '' COLLATE 'latin1_general_ci',
  `U_mp` CHAR(250) NOT NULL COLLATE 'latin1_general_ci',
  PRIMARY KEY (`U_nom`) USING BTREE
)
COLLATE='latin1_general_ci'
ENGINE=InnoDB;
 
/*!40000 ALTER TABLE util DISABLE KEYS */; 
INSERT INTO util (U_nom, U_mp) VALUES
('toto', 'e.*+°*MëÎ*&bXvS}v+°@vX<WgbXi*°Oe|@v:Ö&>W1a');
/*!40000 ALTER TABLE util ENABLE KEYS */;

à l'aide d'un TFDQuery, le caractère & et les caractères bXvS qui le suivent ne sont pas restitués dans le champ ?

Si j'exécute cette requête avec heidisql, aucun problème ...

Dans le moniteur firedac (compliqué de comprendre comment ça fonctionne avec 0 information dans l'aide), j'ai une ligne :

>> dm2.q1.Prepare [Command="/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; ...
avec la valeur à insérer correcte avec &bXvS présent

puis une ligne :

. Preprocessed [CMD="/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; ...
et à ce stade là, les caractères &bXvS ne sont plus présents dans la valeur à insérer ....

J'ai d'autres lignes à insérer avec un & présent dans le champ, et tous les & disparaissent avec 0 ou plusieurs caractères à leur suite qui disparaissent aussi, par exemple :

s+vtYÎC:éÈQÜCÎb/êEä93|b9.rêT&ACbIÈèäc qui devient s+vtYÎC:éÈQÜCÎb/êEä93|b9.rêT

ou

t&*i1yéjqI+)W+5g#4 CZ1_8x]ûtDdBp qui devient t*i1yéjqI+)W+5g#4 CZ1_8x]ûtDdBp

Quelqu'un aurait-il une explication à ce comportement très étrange ?

Merci d'avance.