C# - CSV - Ecriture dans un fichier CSV accents encodage [Fermé]

Signaler
Messages postés
18
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
1 août 2007
-
stever50
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
11 novembre 2010
-
Bonjour à tous,

j'essaie d'écrire dans un fichier .CSV des données extraires d'un fichier XML, mais bon ça a priori ça on s'en fiche... :)
Ma question plus générale est :
comment écrire une chaîne de caractères avec des accents (é,&,à,è,ç etc.) dans un fichier .csv, qui sera ouvert par excel?

Que j'ouvre mon fichier dans mon code de cette manière :
StreamWriter Fichier = File.CreateText(cheminRepertoire + nomFichierSQL);

ou comme ça :
FileStream fluxSortie = new FileStream(cheminRepertoire + nomFichierSQL, FileMode.Create, FileAccess.Write);
StreamWriter Fichier = new StreamWriter(fluxSortie, System.Text.Encoding.ASCII);

quand j'essaie d'écrire dedans et d'ouvrir le résultat sous excel, j'ai des trucs genre :
é   ==>  é
è  ==> è

Vous savez comment encoder ça ou palier à ce problème?

merci beaucoup

Loïc

6 réponses

Messages postés
11
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
20 novembre 2007

Bjr,

Je dois écrire un fichier CSV.
J'ai bien trouvé "System.Text.Encoding.GetEncoding("iso-8859-1") " mais je n'arrive pas à l'appliquer a mon fichier! propriété Encoding en lecture seule...des idées?

Je crée le fichier comme suit:
StreamWriter

writer = File
.CreateText(filename); // pas moyen d'y mettre l'encoding!!!
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Messages postés
99
Date d'inscription
vendredi 25 avril 2003
Statut
Membre
Dernière intervention
14 février 2011
1
Salut loic72,

le plus simple est d'écrire en unicode. Pourquoi unicode ?

Car l'ASCII (ou ANSI) ne reconnait pas les accents.

Pour cela, tu de remplacer :
    StreamWriter Fichier = new StreamWriter(fluxSortie, System.Text.Encoding.ASCII);
Par :
    StreamWriter Fichier = new StreamWriter(fluxSortie, System.Text.Encoding.Unicode);
Ou :
    StreamWriter Fichier = new StreamWriter(fluxSortie, System.Text.UnicodeEncoding.Unicode);

Voila.

Deux choses sont infinies : l'univers et la bêtise humaine.
Mais en ce qui concerne l'univers, je n'en ai pas encore acquis la cetitude absolue.

Albert Einstein<!--
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
Salut,

Pourquoi enregistres tu les données en ASCII si elles sont en UTF8/UTF16/... au départ ?

PS  : Utilise Path.Combine pour tes manipulations de chemins.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
15
tu dois utiliser System.Text.Encoding.GetEncoding("iso-8859-1") pour l'encodage, ou encore System.Text.Encoding.GetEncoding("iso-8859-15") (le deuxieme ajoute uniquement le symbole "?", en général si on n'utilise cet encodage que si nécessaire)
Messages postés
28
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
30 mars 2012

Salut,
J'ai le même problème. J'ouvre un fichier CSV venant d'excel.
J'essaie de le lire via :
string[] fichier = File.ReadAllLines(csvFileInfo.FullName, System.Text.Encoding.GetEncoding("iso-8859-15"));//("iso-8859-1"));
J'ai essayé tous les encodages. (Je crois)
Et j'ai toujours le problème d'interprétation des accents.
le é devient un ?
etc..

Si qq1 peut m'aider, ce serait génial.

Merci d'avance
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
11 novembre 2010

Salut,
Essaie Encoding.UTF8