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 :

[C#] Caractères spéciaux dans un fichier


Sujet :

C#

  1. #1
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut [C#] Caractères spéciaux dans un fichier
    Bonjour à tous,

    Je lis un fichier .csv en C# pour en recréér un autre à l'identique au niveau de l'encodage (en l'occurrence UTF8) avec un certain traitement (rajout de lignes, de colonnes etc.).

    Voici ma déclaration de mon writer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamWriter sw = new StreamWriter(path2, true,System.Text.Encoding.UTF8);
    Or le nouveau fichier créé ne possède plus de caractères accentués, ni de "ç" par exemple.. Le problème vient, je pense, de la lecture du fichier d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (StreamReader sr = File.OpenText(path))
    C'est à ce moment qu'il doit zappé les caractères spéciaux..

    Avez-vous une idée s'il vous plait ? Merci.

  2. #2
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Il faut que tu précises l'encodage de ton fichier d'origine. J'ai remarqué le même problème que toi, et l'encodage de mon fichier source était mal détecté par le framework.

  3. #3
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Bonjour, merci de ta réponse.

    Comment dois-je m'y prendre pour préciser le codage de mon fichier d'origine ?
    A la lecture ? Je n'ai pas trouvé la fonction ou propriété qui permattait de faire cela..

  4. #4
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Je n'utilise pas :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    using (StreamReader sr = File.OpenText(path))

    En général j'alloue mon Streamreader directement :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamReader sr = new StreamReader(path, Encoding.ASCII);

  5. #5
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    J'utilise l'UTF8 pour coder les caractères spéciaux tels que les "é","à","ç" mias mon fichier de destination ne me les prend toujours pas..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StreamReader sr = new StreamReader(path, Encoding.UTF8);
    Console.WriteLine(sr.CurrentEncoding);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StreamWriter sw = new StreamWriter(path2, true,System.Text.Encoding.UTF8);
    while ((s = sr.ReadLine()) != null)
    {
      // traitement
    }

  6. #6
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Bon eh bien je crois que j'ai trouvé... Bizarrement... :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    StreamReader sr = new StreamReader(path, System.Text.Encoding.Default);
    Console.WriteLine(sr.CurrentEncoding);
     
     
    StreamWriter sw = new StreamWriter(path2, true,System.Text.Encoding.Default);
    while ((s = sr.ReadLine()) != null)
    {
      // traitement
    }
    Merci beaucoup de ton aide, en effet utiliser le using n'est pas une bonne solution car on ne peut pas préciser l'encodage.. Par défaut il prenait l'ANSI en lecture.

    Je mets le sujet en résolu.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Fait attention en utilisant le default, suivant la plateforme ca ne fonctionnera pas toujours.

    Le code page windows d'europe de l'ouest est 1252
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Text.Encoding.GetEncoding(1252)

  8. #8
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Merci, je vais essayer. C'est un programme qui ne tourne que sur ma machine.

    EDIT
    -------------------

    Ca marche également, je te remercie. Je viens de cerner une nouvelle fonction.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2010, 10h01
  2. Interdire les espaces (et caractères spéciaux) dans les fichiers
    Par Benoit.RTPW dans le forum Administration système
    Réponses: 4
    Dernier message: 19/05/2009, 09h00
  3. Réponses: 0
    Dernier message: 20/08/2008, 14h19
  4. Affichage de caractères spéciaux dans un fichier
    Par ploxien dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2007, 10h27
  5. Réponses: 15
    Dernier message: 04/01/2007, 08h47

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