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 :

jeux de caractères


Sujet :

InterBase

  1. #1
    AHO
    AHO est déconnecté
    Candidat au Club
    Inscrit en
    Décembre 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 1
    Points : 2
    Points
    2
    Par défaut jeux de caractères
    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

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Re: jeux de caractères
    Citation Envoyé par AHO
    Avec interbase open source je n'arrive pas à sauvegarder [...]
    c'est quoi "sauvegarder" ...
    ç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

  3. #3
    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 Re: jeux de caractères
    Citation Envoyé par SuperTotor
    ç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....
    Bref ce n'est pas la bonne solution...

    AHO tu as utilisé qu'elle character Set ? ISO_8859_2 ?

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Re: jeux de caractères
    Citation Envoyé par Barbibulle
    AHO tu as utilisé qu'elle character Set ? ISO_8859_2 ?
    Où as tu trouvé ce Character Set ???

    Amicalement,

    Toanui.

    PS: Win 2K/SP3 - IB 6.01 - Delphi 6 Ent.

  5. #5
    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'ai la version 6.01 open source d'interbase et elle y est parmis plein d'autres...
    tu as quoi comme version ?

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    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 ?!

  7. #7
    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'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é...

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Re: jeux de caractères
    Citation Envoyé par Barbibulle
    AHO tu as utilisé qu'elle character Set ? ISO_8859_2 ?
    Ok ... je viens de comprendre que tu avais fait une faute de frappe ... non ?! tu voulais dire ISO8859_1 et non ISO_8859_2 ?

    Celui là, je l'ai mais ça me fait des bug avec les caractères spéciaux du français (genre: °, à, ç, ...)

  9. #9
    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 Re: jeux de caractères
    Citation Envoyé par SuperTotor
    Ok ... je viens de comprendre que tu avais fait une faute de frappe ... non ?! tu voulais dire ISO8859_1 et non ISO_8859_2 ?
    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...)

    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 ?

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Re: jeux de caractères
    Citation Envoyé par Barbibulle
    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.

    Pour Delphi, il me sort cette exception :
    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
    j'utilise un TDBGrid avec les composant IB ... je me suis résolu à mettre le character set à none.

    Par contre je ne vois pas trop les pb de tri dont tu parle ni d'astuces pour des recherches correctes ?

  11. #11
    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
    Pour le tri :
    si tu as mis le character Set à none :
    Essaye ceci :

    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
    );
    Ca crée une table avec deux libellés un qui a le charactere set à ISO8859_1 et l'autre libellé à none.
    (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...)

    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');
    Execute ceci :

    select * from MATABLE order by LIB2;
    résultat :

    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é                       
    é                        é
    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'.
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select upper(LIB2), LIB2 from MATABLE order by 1
    Résultat:

    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                        
    é                        é
    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'

    Maintenant essaye le tri sur la colonne ayant le character set ISO8859_1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MATABLE order by LIB2;
    Résultat :
    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
    Tout est parfaitement trié...

    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 1
    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
    Ceci est valable pour les tri mais pour les recherches :

    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MATABLE where UPPER(LIB2) = 'AE'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LIB1                     LIB2                     
    =====================    =====================    
    ae                       ae                       
    AE                       AE                       
    Ae                       Ae
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MATABLE where UPPER(LIB1) = 'AE'
    resultat :
    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
    Ce qui tout de meme mieux quand on recherche des mots dans des libellés.

    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.

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Thanks Barbibule !

    t'es vraiment le BOSS, grâce à toi j'ai fait "un pas de géant ..." en avant


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

Discussions similaires

  1. [ALL] jeux de caractères ensorcellé
    Par speedev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/08/2006, 17h29
  2. Réponses: 1
    Dernier message: 22/06/2006, 19h46
  3. [oracle 8i] Jeux de caractères
    Par Nounoursonne dans le forum Oracle
    Réponses: 1
    Dernier message: 21/03/2006, 15h13
  4. Tutoriels sur les jeux de caractères
    Par tnntwister dans le forum Outils
    Réponses: 4
    Dernier message: 23/01/2006, 15h55

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