Avec interbase open source je n'arrive pas à sauvegarder des données accentués en utilisant isql même aussi en sql dynamique
comment résoudre ce problème
merci
Avec interbase open source je n'arrive pas à sauvegarder des données accentués en utilisant isql même aussi en sql dynamique
comment résoudre ce problème
merci
c'est quoi "sauvegarder" ...Envoyé par AHO
ça viendrait pas de ton "character set", j'avais un pb avec les accents et les caractères français et ils se sont envolé dès que j'ai mis le character set à "none"
ci@o bello
Oui tu n'as plus le meme problème maintenant que tu as le character set à none. Tu ne peux plus trier tes données correctement et les recherches demande d'utiliser une astuce pour qu'elles fonctionnent correctement....Envoyé par SuperTotor
Bref ce n'est pas la bonne solution...
AHO tu as utilisé qu'elle character Set ? ISO_8859_2 ?
Où as tu trouvé ce Character Set ???Envoyé par Barbibulle
Amicalement,
Toanui.
PS: Win 2K/SP3 - IB 6.01 - Delphi 6 Ent.
j'ai la version 6.01 open source d'interbase et elle y est parmis plein d'autres...
tu as quoi comme version ?
j'ai la version 6.01 que j'ai téléchargé il y a 2 semaines sur le site de Borland et qui est dans le fichier InterBase_WI-V6.0.1-server.ZIP.
Par contre, je n'ai pas trouvé ton Car. Set ... bizarre non ?!
J'ai exactement la meme version que la tienne téléchargée du meme endroit...
Quand tu fais avec IBConsole Create Database... tu as la liste dans la combo box Default Charactere Set.
Par defaut tu as 'none' mais si tu remontes dans la liste de la combo tu as environ 3 positions au dessus l'ISO8859_1.
Voilà le tour est joué...
Ok ... je viens de comprendre que tu avais fait une faute de frappe ... non ?! tu voulais dire ISO8859_1 et non ISO_8859_2 ?Envoyé par Barbibulle
Celui là, je l'ai mais ça me fait des bug avec les caractères spéciaux du français (genre: °, à, ç, ...)
Oui j'ai fait une faute de frappe... désolé mais je crois que le 2 existe (mais pour les versions supérieurs.. ou le l ai lu quelque part c est sur car en le voyant je m etais dis que je l avais pas...)Envoyé par SuperTotor
Enfin bref... OUI c'est bien l'ISO_8859_1 qu'il faut utiliser.
Oui tu ne peux pas saisir avec IBConsole les caractères accentués simplement...
Mais avec Delphi il n'y a pas de PB pour faire des mises à jour, des insert etc....
C'est ou que tu as rencontré des bugs ? sous Delphi ou IBConsole ?
C'est vrai, avec ib console il ne valide pas si tu as des caractere exotiquement français.Envoyé par Barbibulle
Pour Delphi, il me sort cette exception :
j'utilise un TDBGrid avec les composant IB ... je me suis résolu à mettre le character set à none.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Arithmetic exception, numeric overflow or string truncation Cannot transliterate character between character sets
Par contre je ne vois pas trop les pb de tri dont tu parle ni d'astuces pour des recherches correctes ?
Pour le tri :
si tu as mis le character Set à none :
Essaye ceci :
Ca crée une table avec deux libellés un qui a le charactere set à ISO8859_1 et l'autre libellé à none.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE "MATABLE" ( "LIB1" VARCHAR(20) CHARACTER SET ISO8859_1 NOT NULL COLLATE FR_FR, "LIB2" VARCHAR(20) NOT NULL );
(Quand tu crées une Database avec un character Set à ISO8859_1 toutes les colonnes de types caractères seront créés avec un caractèr Set à ISO8859_1 sauf si tu lui précise le contraire...)
Maintenant insère les libellés suivants : (Pour les libellés comportant un é tu dois le faire via Delphi ou sinon ce n'est pas important ne les copie pas je vais te donner le résultat...)
Execute ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 insert into MATABLE (LIB1, LIB2) values('a', 'a'); insert into MATABLE (LIB1, LIB2) values('ae', 'ae'); insert into MATABLE (LIB1, LIB2) values('AA', 'AA'); insert into MATABLE (LIB1, LIB2) values('A', 'A'); insert into MATABLE (LIB1, LIB2) values('Z', 'Z'); insert into MATABLE (LIB1, LIB2) values('é', 'é'); insert into MATABLE (LIB1, LIB2) values('E', 'E'); insert into MATABLE (LIB1, LIB2) values('aé', 'aé'); insert into MATABLE (LIB1, LIB2) values('Aé', 'Aé'); insert into MATABLE (LIB1, LIB2) values('AE', 'AE'); insert into MATABLE (LIB1, LIB2) values('Ae', 'Ae'); insert into MATABLE (LIB1, LIB2) values('Az', 'Az'); insert into MATABLE (LIB1, LIB2) values('AZ', 'AZ'); insert into MATABLE (LIB1, LIB2) values('Aa', 'Aa');
résultat :select * from MATABLE order by LIB2;
Comme tu peux le voir les majuscules sont toutes considérées comme étant plus petites que les minuscules le 'Z' est avant le 'a'.
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 LIB1 LIB2 ===================== ===================== A A AA AA AE AE AZ AZ Aa Aa Ae Ae Az Az Aé Aé E E Z Z a a ae ae aé aé é é
Les accents et caractères spéciaux sont plus petits que les 'lettres classiques' : le 'é' est après le 'z'.
Donc si tu peux résoudre en partie le tri en mettant tout en majuscule
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part select upper(LIB2), LIB2 from MATABLE order by 1
Il reste le problème des accents et caractères spéciaux qui ne sont pas mis en majuscule et reste donc considérés comme étant plus grand que le Z. Le 'é' est après le 'Z'
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 F_1 LIB2 ===================== ===================== A A A a AA AA AA Aa AE AE AE Ae AE ae AZ AZ AZ Az Aé Aé Aé aé E E Z Z é é
Maintenant essaye le tri sur la colonne ayant le character set ISO8859_1:
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from MATABLE order by LIB2;
Tout est parfaitement trié...
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 LIB1 LIB2 ===================== ===================== a a A A Aa Aa AA AA ae ae Ae Ae AE AE aé aé Aé Aé Az Az AZ AZ E E é é Z Z
Pour Info (la mise en majuscule transforme bien le 'é' en 'E'
Code : Sélectionner tout - Visualiser dans une fenêtre à part select upper(LIB1), LIB1 from MATABLE order by 1Ceci est valable pour les tri mais pour les recherches :
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 F_1 LIB1 ===================== ===================== A A A a AA AA AA Aa AE AE AE Ae AE ae AE Aé AE aé AZ AZ AZ Az E E E é Z Z
essaye :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from MATABLE where UPPER(LIB2) = 'AE'et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 LIB1 LIB2 ===================== ===================== ae ae AE AE Ae Ae
resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from MATABLE where UPPER(LIB1) = 'AE'
Ce qui tout de meme mieux quand on recherche des mots dans des libellés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 LIB1 LIB2 ===================== ===================== ae ae aé aé Aé Aé AE AE Ae Ae
Maintenant que je t'ai prouvé qu'il faut utiliser le character Set ISO8859_1 pour que tout fonctionne corectement, tu dois avoir très envie de résoudre ton problème de
....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Arithmetic exception, numeric overflow or string truncation Cannot transliterate character between character sets
Bon la solution est extremement...SIMPLE !
Et oui ....
(Bon j'arrete de te faire languir...)
DOUBLE CLIC SUR LE COMPOSANT IBDataBase et tu choisis dans "Jeu de caractères" : ISO8859_1... voilà c'est pas plus compliqué. Ca te rajoute le paramètre "lc_ctype=ISO8859_1" dans la liste des paramètres de connexion.
Et maintenant tu peux sans problème insérer les caractères accentués etc...
Bon développements.
Thanks Barbibule !
t'es vraiment le BOSS, grâce à toi j'ai fait "un pas de géant ..." en avant
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