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 : 40
    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.

  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 : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    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 : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    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 : 40
    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!)

  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 ?

  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;
    }

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    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...

  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 : 40
    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 !!!

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