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

C Discussion :

Création d'un Index de fichier *.txt avec accents


Sujet :

C

  1. #1
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut Création d'un Index de fichier *.txt avec accents
    Bonjour à tous.

    Ma question va paraître bête à beaucoup, mais je n'arrive pas à trouver mon bonheur sur google ou sur Developpez.com.

    J'ai vu le site d'Emmanuel Delahaye (une bible ces derniers temps pour moi !) et ce post : http://www.developpez.net/forums/sho...d.php?t=153534
    mais rien ne me convainc vraiment.

    Le projet sur lequel je bosse est en fait un créateur d'index à partir d'un fichier contenant un texte quelconque et un fichier contenant une liste de mots "non-clés". Je m'explique, je cherche tous les mots du texte potentiellement indexable selon certains critères dont leur affluance ou encore leur présence dans la liste des mots non clés.

    Mon problème se situe dans la gestion des accents... Ca me semble assez récurrent comme requête mais je m'y casse les dents. Comment les traiter? Les caractères de la table ASCII étendue semblent me convenir mais j'ai lu dans le forum, ce n'est pas portable. Alors que faire ? Me pencher sur Unicode? Perso, cela me fait peur...

    Auriez-vous une idée?


    PETITE INFO : Devinez en quoi j'ai modélisé ça ? En Strucural Design !!! Mouaaaaaarf


    Merci d'avance.
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  2. #2
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Ecris le fichier en UTF-8 ça permettra de comprendre même un fichier écrit en russe.
    Bon je dis ça mais je n'ai pas trop compris le problème. Peut-être une question de locales.

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Euh non, si il doit traiter que du texte français ou anglais, le latin1 ou latin9 serait plus aproprié

    Dans ton "index", il faut que tu sauvegardes aussi la version "non accentuée" de chaque mot clé.

    Pour convertir une chaine accentuée latin1 en chaine non accentuée, il te faut une table d'équivalence "char accentué" => "char non accentué" dont l'indice dans le tableau correspond (avec un decallage possible) au code du caractere latin1

  4. #4
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Latin 1 (ISO-8859-1) : http://en.wikipedia.org/wiki/Latin1#Code_table
    Latin 9 (ISO-8859-15), pareil mais avec quelques car. speciaux qui different : http://en.wikipedia.org/wiki/ISO_8859-15

    Pour savoir dans quel encodage sont tes fichiers il faut que t'arrives à identifier d'où proviennent les chaines (si ça vient d'un textarea d'un formulaire sur le web, il faut voir l'encodage de la page qui contenait ce formulaire)

  5. #5
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Merci. mais comment cela s'utilise ? (Aïe pas sur la tête!)
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Bonjour,

    Citation Envoyé par panda31
    Me pencher sur Unicode? Perso, cela me fait peur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #define UNICODE
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void) {
        wprintf(TEXT("%s\n"),TEXT("Bou!"));
        exit(EXIT_SUCCESS);
    }
    T'as eu peur ?

    Citation Envoyé par panda31
    Auriez-vous une idée?
    Oui : lance toi.


    Citation Envoyé par panda31
    PETITE INFO : Devinez en quoi j'ai modélisé ça ? En Strucural Design !!! Mouaaaaaarf
    ...et ?
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par David.Schris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #define UNICODE
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void) {
        wprintf(TEXT("%s\n"),TEXT("Bou!"));
        exit(EXIT_SUCCESS);
    }
    T'as eu peur ?
    Oui :
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:6: warning: implicit declaration of function `TEXT'
    main.c:6: warning: passing arg 1 of `wprintf' makes pointer from integer without a cast
    main.c:8:2: warning: no newline at end of file
    Linking console executable: C:\dev\forums\forums.exe
    .objs\main.o: In function `main':
    C:/dev/forums/main.c:6: undefined reference to `TEXT'
    C:/dev/forums/main.c:6: undefined reference to `TEXT'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 6 seconds)
    Là, j'ai eu moins peur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <wchar.h>
     
    int main (void)
    {
       wchar_t ws[] = L"Bou!";
       wprintf (L"%s\n", ws);
       return 0;
    }
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Les macros TEXT() et Cie sont définies dans <tchar.h> et quelque part dans windows.h ou un header qu'il inclut.

    Et elles ne s'emploient pas avec wprintf(). Elle s'emploient avec les fonctions TCHAR.

    Un programme bien fait doit compiler aussi bien avec UNICODE et _UNICODE définis que sans, et mélanger des fonctions wchar_t et des fonctions TCHAR ne satisfait pas cela...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Merci de votre aide. Donc, si j'ai bien compris, il faut que je fasse comme si j'étais en ASCII mais en remplaçant printf par une fontion de TCHAR ?

    Merci beaucoup.

    A plus.

    PS : Pour le Structural Design, c'est moche quand même...NON JE NE FAIS PAS DU JEUNISME PRIMAIRE !!!
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2012, 10h28
  2. Réponses: 6
    Dernier message: 30/12/2009, 13h03
  3. probleme d'import de fichier txt avec des tab
    Par lecureuil dans le forum Access
    Réponses: 4
    Dernier message: 23/08/2005, 19h22
  4. Creer un fichier txt avec la date du jour
    Par quarkz dans le forum Débuter
    Réponses: 8
    Dernier message: 28/07/2005, 17h29
  5. Pb import fichier txt avec lignes de longueurs diverses
    Par zebulon90 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2004, 08h32

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