Bonjour,
J'ai une base de donnée firebird que j'accède via ODBC (Firebird 2.1). Ma base est créée de cette manière :
Je me connecte à ma base via ODBC avec un TDatabase et je l'intéroge avec un TQuery :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SET SQL DIALECT 3; SET NAMES UTF8; CREATE DATABASE '127.0.0.1/gds_db:C:\Documents and Settings\jimmy\Mes documents\Dev\Base.FDB' USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 16384 DEFAULT CHARACTER SET UTF8;
Lorsque je veux récupérer des données, mes champs VARCHAR avec un CHARSET à UTF8 n'apparaissent pas. Par exemple j'ai cette table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 FDataBase.DatabaseName := 'Base'; FDataBase.AliasName := 'Base'; FDataBase.Params.Add('UID=sysdba'); FDataBase.Params.Add('PASSWORD=masterkey'); FDataBase.Params.Add('CHARSET=UTF8'); FDataBase.LoginPrompt := False; FDataBase.Open; FQuery.DatabaseName := FDataBase.DatabaseName;
Après avoir fait un SELECT * FROM DIVISION; avec le TQuery, si je boucle sur FQuery.Fields je retrouve mes champs IDDIVISION et IDNIVEAU mais pas CODE et LIBELLE. Si je change le CHARACTER SET à NONE, alors ces champs apparaissent !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE DIVISION ( IDDIVISION INTEGER NOT NULL, CODE VARCHAR(8) CHARACTER SET UTF8 NOT NULL COLLATE UTF8, LIBELLE VARCHAR(30) CHARACTER SET UTF8 NOT NULL COLLATE UTF8, IDNIVEAU INTEGER, );
J'admet que je n'arrive vraiment pas à trouver pourquoi ...
Partager