C# - CSV - Ecriture dans un fichier CSV accents encodage

cs_loic72 Messages postés 18 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 1 août 2007 - 1 août 2007 à 17:16
stever50 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 11 novembre 2010 - 27 oct. 2010 à 15:27
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
A voir également:

6 réponses

alexandre7g Messages postés 11 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 11:18
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
winny68 Messages postés 99 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 14 février 2011 1
5 déc. 2007 à 11:48
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
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 août 2007 à 19:51
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
*/
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
2 août 2007 à 12:14
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DrChal Messages postés 28 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 30 mars 2012
27 oct. 2010 à 12:23
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
0
stever50 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 11 novembre 2010
27 oct. 2010 à 15:27
Salut,
Essaie Encoding.UTF8
0
Rejoignez-nous