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 :

Récupération du texte d'un fichier


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut Récupération du texte d'un fichier
    Bonjour à tous,

    Voici mon problème, je dois récupérer dans un char * ou un string, le texte d'un fichier.
    Et pas de souci pour faire ça, sauf qu'au final, tous les caractères spéciaux et les accents sont "incompris".

    Par exemple au lieu des 'é', dans mon char * je trouve des 'ù'..
    Pareil pour le string..

    Je pense qu'il faut passer par un unsigned char * dès la lecture du fichier, mais impossible.. je ne vois pas comment faire.

    Voilà !

    Donc si quelqu'un a des conseils, ou encore mieux, la solution, je suis preneur !!

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Par défaut
    Premièrement, quel genre de fichier lis-tu ?

    Ça peut-être un lien avec l'encoding de ton fichier.

    Il est possible dans java de définir l'encodage que tu veux pour la lecture du fichier(et éventuellement l'écriture).

    Je lis habituellement mes fichier txt comme ceci (là je lis qu'une seule ligne évidemment mais juste pour te montrer pour l'encodage) et je n'ai pas de problèmes avec les accents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
            BufferedReader in = new BufferedReader(
                new InputStreamReader(new FileInputStream("fichier.txt"), "UTF8"));
            String str = in.readLine();
         } catch (UnsupportedEncodingException e) {
         } catch (IOException e) {
    }
    En espérant que ça puisse t'aider.

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Merci pour ta réponse, mais le langage que j'utilise c'est le C++.

    Sinon pour répondre à ta question, le fichier que j'essaye de lire, c'est un fichier .txt

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Bibou06 Voir le message
    Bonjour à tous,

    Voici mon problème, je dois récupérer dans un char * ou un string, le texte d'un fichier.
    Et pas de souci pour faire ça, sauf qu'au final, tous les caractères spéciaux et les accents sont "incompris".

    Par exemple au lieu des 'é', dans mon char * je trouve des 'ù'..
    Pareil pour le string..

    Je pense qu'il faut passer par un unsigned char * dès la lecture du fichier, mais impossible.. je ne vois pas comment faire.

    Voilà !

    Donc si quelqu'un a des conseils, ou encore mieux, la solution, je suis preneur !!

    Merci.
    Au debut un caractèré était sur 7bits et non 8...
    C'est pour cela que tu as des problème avec certain caractère spéciaux. Car ton fichier texte et ta lecture n'utilise pas le même encodage avec ce huitème bit. Normalement tu peut changer le local de ton flux mais la je n'ai encore rien compris à tout ça...

  5. #5
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    je n'ai encore rien compris à tout ça...
    Ah sur ce point on est d'accord !!

    C'est compliqué le C++..

    Merci pour ta réponse !!

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Bibou06 Voir le message
    Ah sur ce point on est d'accord !!

    C'est compliqué le C++..

    Merci pour ta réponse !!
    Ici ce n'est pas vraiment un problème de C++ mais d'encodage

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut
    Il faudrait savoir avec quelle instruction vous ouvrez votre fichier.

    Avec "_open" et ses dérivés il faut le lire en binaire, seul moyen de retrouver exactement ce qui y est écrit.

    Ensuite il faut savoir si ce fichier est vraiment un "*.txt" et s'il à été écrit sous windows, dans ce cas il y a de forte probabilité pour que le texte soit lisible sans soucis.

    S'il doit y avoir des conversions ... c'est une autre histoire.

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Premièrement, il est possible d'avoir un problème d'encodage à deux endroits :
    - A la lecture du fichier
    - A l'affichage de son contenu

    Pour la lecture, il faudrait savoir quel encodage est utilisé (et dire que le fichier est un .txt n'apporte aucune information là dessus). Certains programmes qui écrivent des fichiers textuels commencent ceux-ci par un code binaire indiquant l'encodage. Sinon, il faut voir avec le programme ayant servi à écrire ce fichier comment il était configuré.

    Pour l'affichage, il faut savoir où tu affiches. La console windows, par exemple, utilise un encodage différent du reste du système...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut
    Sous windows et à moins que le programmeur soit tordu le fichier sera généralement écrit en 1252 (le code-page natif pour nos versions occidentales)
    donc une lecture ne posera pas de problème.

    Pour autant une conversion n'est pas difficile (voir le site UNICODE ou ISO) s'il s'agit que de retrouver nos chers accents.

    Un conseil (que je ne suis pas toujours !) écrire avec la norme ISO/CEI 10646 comme cela plus de soucis même le Thibetain les caractères cunéiformes y sont !

  10. #10
    Membre averti
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Merci pour vos conseils !
    Finalement j'ai corrigé le problème en passant pas la fonction CharToOem :

    #include <windows.h>
    char* texteTemp = le texte avec les caractères bizarres;
    char* texte;
    CharToOem(texteTemp,texte);

    et je récupère le bon texte avec les bons caractères dans la variable "texte".

    C'est bien pratique !

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

Discussions similaires

  1. Récupération de texte provenant d'un fichier excel
    Par jponsoda dans le forum MATLAB
    Réponses: 5
    Dernier message: 09/06/2010, 08h48
  2. Récupération de caratères d'un fichier texte.
    Par sebo13 dans le forum Langage
    Réponses: 6
    Dernier message: 02/02/2010, 12h16
  3. Récupérations d'infoS dans un fichier texte
    Par remsrock dans le forum C#
    Réponses: 8
    Dernier message: 01/07/2008, 18h38
  4. récupération de données dans un fichier texte
    Par capucine1983 dans le forum Langage
    Réponses: 4
    Dernier message: 30/06/2007, 00h16
  5. Récupération d'un texte d'un fichier ?
    Par lipczynski dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/08/2005, 10h27

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