Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2003, 16h07   #1
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
Par défaut [Résolu] Problème avec accents et CHARACTER SET ISO8859_1

j'accède à une base Interbase 6.0 via une application Delphi 6 et quand j'update un champ texte avec ce char set CHARACTER SET ISO8859_1 que je sois sous delphi 6 ou sous IB console j'ai le message :

Citation:
arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets.


Le problème viens sans doute du charset mais pourquoi et quel charset mettre.

Si quelqu'un pouvait m'eclairer sur les différents charset ca serait super sympa.

Merci beaucoup.
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2003, 16h13   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Je pense que vous n'avez pas configurer la connexion delphi/interbase de la bonne manière.

Il faut non seulement préciser lors de la création de la base (ou colonne) le char set que l'on veut utiliser (couramment pour le Français le ISO8859_1) ce que vous avez apparemment bien fait,

mais également préciser au composant de connexion à la base que l'on veux utiliser le charset Iso8859_1.

Je ne sais pas quel provider vous utilisez mais si ce sont les composants IB il suffit de double cliquer sur le TIBDataBase et bien renseigner le CHARSET.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2003, 10h20   #3
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
J'utilise des composants BDE TDatabase et des composants IB TIBDatabase mais j'ai bien renseigné le CHARACTER SET dans le composant IB mais ca ne marche pas pour autant. :

En plus je ne peux pas enlever le CHARACTER SET de ma base sans perde mes données... SUPER


Why??
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2003, 10h47   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
peux tu nous donner l'ordre insert qui pose probleme et les caractèristiques exacte de la colonne texte qui pose probleme ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2003, 11h42   #5
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
la définition de la colonne est :
Code :
CLIENT VARCHAR(50) CHARACTER SET ISO8859_1
l'insert est :
Code :
INSERT INTO TABLEUSER (USER) VALUES ('Gérard') ;
ca fait une erreur aussi en Update.
dès que je met des accents :
  • é è à ï ô ...
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2003, 12h16   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par kinda
J'utilise des composants BDE TDatabase et des composants IB TIBDatabase mais j'ai bien renseigné le CHARACTER SET dans le composant IB mais ca ne marche pas pour autant. :
J'avais pas fait attention... tu utilises BDE et les composants IB ??

mais le composant dans lequel tu as mis l'insert est attaché au IB ou BDE ?


Pour BDE je ne peux pas te dire comment le configurer mais il faut le faire c'est certain et pour le IBDatabase (si c'est bien ca que ton composant insert utilise) il faut double cliquer dessus et choisir
jeux de caractère : ISO8859_1 ce qui ajoute ceci à la chaine de connexion : lc_ctype=ISO8859_1.

S'il n'y a pas ça ca ne peux pas marcher. Peux tu confirmer que tu as bien vérifié ce parametre ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2003, 16h33   #7
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
oui j'ai bien mis ce paramètre dans le composant IB mais ca ne marche pas meiux

la seule manière que j'ai trouvée pour que je puisse mettre des accents est sous IBConsole quand je référence la base je lui met le CHARACTER SET a ISO8859_1 et là je peux entrer des accents sans problème.

Mon problème c'est que je peux pas reconstruire ma base car les données qu'elle conient ne doivent pas etre perdues et en plus j'ai une tonne de procedures stockées...

donc j'ai bien regardé les composants IB et il y a bien
Citation:
lc_ctype=ISO8859_1.
je vois pas comment faire on dirait qu'il y a probleme car la base n'a pas de character set par defaut et que tout mes champs textes en ont un.
De plus ca ne pose pas problème pour mes BLOB.

Je suis perplex et paumé
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2003, 19h24   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
J'avoue ne pas avoir le temps d'essayer les différentes possibilitées.

Ce que je sais c'est qu'en effet lorsque je crée une base, je précise bien lors de la création ISO8859_1.

Je ne sais pas trop comment ratrapper la chose, moi j'essayerai d'extraire les métadonnées de la base avec un logiciel tel IBExpert ainsi que les données. Ensuite modification du début du script pour avoir le DEFAULT CHARACTER SET ISO8859_1. Et enfin exécuter ce script qui normalement devrait permettre de tout retrouver comme avant...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2003, 14h43   #9
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
Merci qd même je suis en train d'essayer cela mais bon c'est vachement long et compliqué (surtout recreer les utilisateurs et les roles avec les bons droits )

Maintenant je ferais gaffe en créant ma base
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2003, 15h09   #10
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par kinda
Merci qd même je suis en train d'essayer cela mais bon c'est vachement long et compliqué
Avec IBExpert c'est facilement faisable et ça ne doit pas prendre beaucoup de temps.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2003, 10h17   #11
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
merci je vais regarder avec IBexpert

kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2003, 14h35   #12
Invité de passage
 
Inscription : janvier 2003
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 7
Points : 3
Points : 3

Salut,

J'ai eu le meme pb en utilisant les composants dbexpress.
En fait, ça vient d'Interbase.
Pour resoudre se pb, j'ai supprimé " CHARACTER SET ISO8859_1 "

Lors de creation de ta table, inscrit simplement :

CLIENT VARCHAR(50) ,


!!! Verifie de ne pas avoir créer ta base avec un script du genre :
SET SQL DIALECT 3;

CREATE DATABASE 'C:\Develop\DataBase\MyBase.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;



A+
nicang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2003, 15h17   #13
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par nicang

Salut,
J'ai eu le meme pb en utilisant les composants dbexpress.
En fait, ça vient d'Interbase.
Pour resoudre se pb, j'ai supprimé " CHARACTER SET ISO8859_1 "
Lors de creation de ta table, inscrit simplement :
CLIENT VARCHAR(50) ,
!!! Verifie de ne pas avoir créer ta base avec un script du genre :
SET SQL DIALECT 3;
CREATE DATABASE 'C:\Develop\DataBase\MyBase.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
A+
Tu as en effet résolu le probleme car dans ce cas tu as un charactereSet = none et donc tu peux inserer n'importe quel caractères dans les chaines.

Mais cette méthode est valable si tu ne comptes pas demander à interbase de :
1-trier correctement
par exemple voilà comment le tri se fera en characterSet=none:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
A
AA
AU
AZ
Aa
Au
Az
a
aU
aZ
aa
au
az
alors qu'il devrait être :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
A
a
AA
Aa
aa
AU
Au
aU
au
AZ
Az
aZ
az
2-Lors de recherche en utilisant UPPER('é') de ne pas trouver les E, e et inversement une recherche de UPPER('e') ne pas trouver les é,è,ê,ë.

Voilà.

Donc si celà ne vous dérange pas alors oui c'est la solution de facilité. Mais d'un autre coté pour avoir des tris correctes, il ne faut pas utiliser les caractères accentués et de préférence les données d'une même colonne en minuscule ou tout en majuscule. Dans ce cas là oui le tri sera correcte.

Donc je rappel que pour éviter d'avoir des tris qui ne ressemblent à rien et que les recherches dans les chaines soient cohérentes il faut utiliser par exemple le characterset=Iso8859_1 avec une collation FR_FR.
Au niveau des déclaration dans la base de donnée mais également au niveau de la connection à cette base.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2003, 15h49   #14
Invité de passage
 
Inscription : avril 2003
Messages : 14
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 14
Points : 4
Points : 4
voila j'ai recrée ma base comme ca ca marche maintenant avec le defaut characterset=Iso8859_1
et mes champs avec le characterset=Iso8859_1 avec une collation FR_FR.

mes tris sont bon et mes accents aussi...

j'ferais gaffe maintenant....

merci!
kinda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h36.


 
 
 
 
Partenaires

Hébergement Web