Passage de caractères spéciaux en StreamWriter/Reader

cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 février 2006 - 20 janv. 2006 à 15:23
winny68 Messages postés 99 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 14 février 2011 - 5 déc. 2007 à 11:53
Bonjour à tous,

j'aimerais savoir s'il est possible de passer des caractères spéciaux (ex : 'é', 'è', 'ñ',..) en StreamWriter/Reader.

Merci beaucoup !
A voir également:

4 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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
}
0
cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 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 :-°
0
cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 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.

Lorsque ensuite j'envoie la chaine sous Excel, j'ai donc "Rfrence" mais en fin de chaine j'ai "é" à la place de mon "é"..

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);
0
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:53
using (StreamWriter sw = new StreamWriter(@"c:\temp\MyFile.csv", UnicodeEncoding.Unicode)
{
    sw.WriteLine("Référence;Année")
}

c'est un vieux message, mais sa peut servir.
0
Rejoignez-nous