IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InterBase Discussion :

Problème avec accents et CHARACTER SET ISO8859_1


Sujet :

InterBase

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    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 :

    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.
    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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??
    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    peux tu nous donner l'ordre insert qui pose probleme et les caractèristiques exacte de la colonne texte qui pose probleme ?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    la définition de la colonne est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CLIENT VARCHAR(50) CHARACTER SET ISO8859_1
    l'insert est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TABLEUSER (USER) VALUES ('Gérard') ;
    ca fait une erreur aussi en Update.
    dès que je met des accents :
    • é è à ï ô ...

    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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 ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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
    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é
    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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...

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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
    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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.

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    merci je vais regarder avec IBexpert

    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut

    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+

  13. #13
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    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!
    /*************************/
    /* + + + + + ++ +++ */
    /* ++ + +++ + + +_+ */
    /* + + + + + ++ + + */
    /*************************/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de "look" avec "Use Unicode Character Set"
    Par hassenman dans le forum MFC
    Réponses: 2
    Dernier message: 13/01/2010, 11h19
  2. Problème avec accent
    Par webide67 dans le forum Langage
    Réponses: 6
    Dernier message: 29/12/2009, 09h50
  3. [Système] problème avec accent utf8_decode
    Par ch_lensois dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2007, 13h24
  4. Réponses: 1
    Dernier message: 25/11/2005, 20h40
  5. Problème avec accents Interbase
    Par koolkris dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/08/2005, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo