Rebonjour,
Pourquoi firebird 2.51 n'accèpte pas les caractère é,è,°,...
Rebonjour,
Pourquoi firebird 2.51 n'accèpte pas les caractère é,è,°,...
Firebird accepte sans probleme les caracteres accentués.
Quel est le jeu de caractere de ta base de données ?
Les problemes d'accents sont souvent dus aux composants graphiques.
Quel language utilisez vous avec quels composants ?
Mercie ddaime pour la répense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DEFAULT CHARACTER SET NONE;
serait plus indiquéeCHARACTER SET ISO8859_1
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour,CHARACTER SET ISO8859_1 serait plus indiquée
Veuillez ne pas m'en vouloir de cette modeste "contradiction", mais je pense qu'utiliser l'ISO8859_1 avec la version française de Windows est une erreur fréquente. Le jeu de caractères utilisé par cette version est WIN1252.
Il manque en particulier au jeu ISO8859_1 les caractères dans la tranche #130 à #159 dont notre œ (#156) souvent utilisé (et malheureusement "oublié") dans nos noms de communes et autres noms.
L'utilisation de Firebird demande la définition de 2 jeux de caractères: le premier pour la connexion, le second pour les champs de type chaîne. Pour éviter le transcodage dans le logiciel, le jeu de connexion doit être celui utilisé par le logiciel (UTF8 pour Lazarus, WIN1252 pour D7...). Si le jeu utilisé pour les chaînes est différent, Firebird se charge du transcodage. Il émet une erreur s'il trouve un caractère qui n'a pas de correspondance dans les 2 jeux, évitant ce que certains considèrent à juste raison comme une corruption de la base. Mais si les 2 jeux sont identiques, il n'y a pas de transcodage, donc pas de "vérification", et "tout passe". Je connais ainsi une base de communes construite avec D7 et les 2 jeux ISO8859_1, qui est devenue illisible depuis un logiciel Lazarus avec la connexion UTF8.
André
Bonjour,
J'ai pas encore réglé le problème.
J'ai oublié de vous signaler que j'étais sur Firebird 2.0, le prblème parvient après l'installation de la version 2.5.
j'ai cherché dans dans les forums, j'ai trouvé la solution suivante :
backup dans l'ancien version la 2.0 puis un restore sur la nvlle version 2.5 :
Le backup se passe normalement (evidement)
Le restore ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part gbak -b mydata.fdb mydata.fbk -USER SYSDBA -PASSWORD masterkey
Code : Sélectionner tout - Visualiser dans une fenêtre à part gbak mydata.fbk mydata.fdb -R -USER SYSDBA -PASSWORD masterkey -FIX_FSS_METADATA UTF8 -REP
erreur :
Je crois que 2.5 n'accepte pas l'option : -FIX_FSS_METADATA portant cette option est présente dans la syntaxe voir : (http://www.destructor.de/firebird/gbak.htm)
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 c:\DATA>gbak mydata.fbk mydata.fdb -R -USER SYSDBA -PASSWORD masterkey -FIX_FSS_METADATA UTF8 -REP gbak:unknown switch "@1" gbak:legal switches are: @1B(ACKUP_DATABASE) backup database to file @1BU(FFERS) override page buffers default @1C(REATE_DATABASE) create database from backup file (restore) @1CO(NVERT) backup external files as tables @1E(XPAND) no data compression @1FA(CTOR) blocking factor @1G(ARBAGE_COLLECT) inhibit garbage collection @1I(NACTIVE) deactivate indexes during restore @1IG(NORE) ignore bad checksums @1K(ILL) restore without creating shadows @1L(IMBO) ignore transactions in limbo @1M(ETA_DATA) backup or restore metadata only @1MO(DE) <access> "read_only" or "read_write" access @1N(O_VALIDITY) do not restore database validity conditions @1NT Non-Transportable backup file format @1O(NE_AT_A_TIME) restore one table at a time @1OL(D_DESCRIPTIONS) save old style metadata descriptions @1P(AGE_SIZE) override default page size @1PAS(SWORD) Firebird password @1R(ECREATE_DATABASE) [O(VERWRITE)] create (or replace if OVERWRITE used)\n database from backup file (restore) @1REP(LACE_DATABASE) replace database from backup file (restore) @1RO(LE) Firebird SQL role @1SE(RVICE) use services manager @1T(RANSPORTABLE) transportable backup -- data in XDR format @1USE_(ALL_SPACE) do not reserve space for record versions @1USER Firebird user name @1V(ERIFY) report each action taken @1Y <path> redirect/suppress status message output @1Z print version number gbak:switches can be abbreviated to the unparenthesized characters gbak: ERROR:found unknown switch gbak:Exiting before completion due to errors
Bonsoir,
http://www.firebirdsql.org/file/docu...mdline-restore est peut-être plus clair.
On y lit:
-REP[LACE_DATABASE]
Replace database from backup file. This switch used to be abbreviated to -r in previous (to Firebird 2.x) versions. This switch will be removed in a version of Firebird later than 2.1.3 (where it still exists). You are advised to use the -r[ecreate_database] o[verwrite] switch instead.
Il faut donc maintenant utiliser -R O à la place des -R et -REP dans votre ligne de commande pour recréer la base en écrasant l'ancienne.
André
Merci alanglet pour la répense et Bonsoir.
Oui -REP ne convient pas avec -R.
Mais malgrè la restauration, j'ai l'erreur suivante :
à la ligne 2019 : la procedure contient le caractère é
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 SQL> input d:\ng\p.sql; Statement failed, SQLSTATE = 42000 unsuccessful metadata update -STORE RDB$PROCEDURES failed -Malformed string After line 2019 in file d:\ng3\p.sql Statement failed, SQLSTATE = 42000 unsuccessful metadata update -STORE RDB$PROCEDURES failed -Malformed string After line 2256 in file d:\ng3\p.sql Statement failed, SQLSTATE = 42000 unsuccessful metadata update -STORE RDB$PROCEDURES failed -Malformed string After line 4793 in file d:\ng3\p.sql Statement failed, SQLSTATE = 42000 unsuccessful metadata update -STORE RDB$PROCEDURES failed -Malformed string After line 6475 in file d:\ng3\p.sql SQL>
à la ligne 2256 : la procedure contient le caractère ° (N°)
même chose pour les ligne 4793, 6475
Là où il y a les caractères des accent : é,è,â,à,°
comme vous voyer j'ai restaurer avec l'option
Code : Sélectionner tout - Visualiser dans une fenêtre à part -FIX_FSS_METADATA UTF8
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> show database; Database: mydata.fdb Owner: SYSDBA PAGE_SIZE 4096 Number of DB pages allocated = 33090 Sweep interval = 20000 Forced Writes are OFF Transaction - oldest = 7194 Transaction - oldest active = 7195 Transaction - oldest snapshot = 7195 Transaction - Next = 7196 ODS = 11.2 Default Character set: NONE SQL>
remarquer la ligne du charset est à none :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Default Character set: NONE
Je crois qu'il faut la mettre à UTF8
Comment puis-je le faire ?
Merci.
J'ai oubliè de vous signaler que j'ai ajouter la ligne suivante à mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET NAMES UTF8;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager