Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 21 janv. 2006 à 00:22
Salut, Il y'a une surcharge du constructeur qui permet de chosir l'encodeur pour le StreamReader et le StreamWriter, mais l'encodeur par défaut est "UTF-8" et il gère les caractères spéciaux, ex:
using ( StreamWriter sw = new StreamWriter( "C:\\File.txt" ) )
{
sw.WriteLine( "éèàâîñ" ); // OK
}
cs_shoka
Messages postés29Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention21 février 2006 21 janv. 2006 à 11:15
Bizarre moi ça ne marche pas..
exemple :
using (StreamWriter sw = new StreamWriter(@"c:\temp\MyFile.csv")
{
sw.WriteLine("Référence;Année")
}
Dans Excel, j'ai les cellules : "Rfrence" et "Anne"
Bon, sinon je vais essayer de jouer avec les encodeurs, peut-être que celui par défaut n'est pas reconnu sous Excel :-°
cs_shoka
Messages postés29Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention21 février 2006 23 janv. 2006 à 12:01
Tests :
Lorsque je lis (StreamReader) sans spécifier l'encodage à partir d'un fichier texte, les "é" ne passent pas (le caractère est supprimé : "Rfrence" au lieu de "Référence").
Lorsque j'ajoute à la chaine le caractère "\u00E9" et que j'affiche la chaine à l'aide d'un MessageBox.Show, j'ai bien un "é" à la fin de chaine.
Je vais continuer les tests, si vous avez une piste n'hésitez pas :)
Mon code de test est le suivant (le fichier "entete" est celui qui contient la chaine "Référence, Année,...", le fichier "MyFile" est celui qui sera affiché sous Excel) :
using(StreamReader sr = new StreamReader(@"C:\temp\entete.csv"))
{
chaine = sr.ReadToEnd();
chaine += "\u00E9";
MessageBox.Show(chaine);
}
using(StreamWriter sw = new StreamWriter(@"c:\temp\MyFile.csv", true))
{
sw.WriteLine(chaine);
}
p = Process.Start("excel.exe", fileName);