Re : StreamWriter

Langages .NET

StreamWriter


SpokyJen 04-25-2008, 14:55
Bonjour a tous,

Pourriez-vous m'aider avec ce qui suit?

Mon problem se situe au niveau du StreamWriter et des é à è.

Voici mon code :



//Ecrire la ligne qui a un code fonction
if (!File.Exists(@"C:\\HR.HP1.FONCT.ORG.txt"))
{
sw = new StreamWriter(@"C:\\HR.HP1.FONCT.ORG.txt", true, System.Text.Encoding.Default);
sw.WriteLine(ligne);
//sw.Close();
//sw = null;
}
else
{
sw = File.AppendText(@"C:\\HR.HP1.FONCT.ORG.txt");
sw.WriteLine(ligne);
//sw.Close();
//sw = null;
}
sw.Close();




Le probleme est que les caracteres speciaux ne s'affiche il saffiche de maniere coder, donc parfios il est sur deux position ce qui decale tout mon fichier txt de sortie.

Jai essayer avec :
sw = new StreamWriter(@"C:\\HR.HP1.FONCT.ORG.txt", true, System.Text.Encoding.Default);
Default, UTF8, ASCII cela ne change rien!
quelqu'un a une idee??

D'avance merci!
Moi

Re : StreamWriter


okavango 04-28-2008, 8:11
Salut !
ah haaaa !!!
Ce problème revient souvent quand on manipule les fichiers.
  • <<Le probleme est que les caracteres speciaux ne s'affichent que de manière codée. Parfois ils sont sur deux positions, ce qui décale tout mon fichier txt de sortie.>>
En effet, cela veut dire que les caractères spéciaux sont codés sur deux octets (et + encore). Tu tentes d'écrire des caractères encodés en UTF8 dans un fichier encodé en Unicode (ou autre), ou encore inversement.
Tu te retrouves avec des caractères comme é, etc. Donc cela rallonge la taille de ton fichier.
Opte plutôt pour un encodage UTF8. Ton fichier devra être au format UTF8, et l'encodage ton StreamWriter également.

"L'encodage le plus pratique pour échanger des textes constitués de caractères Unicode est UTF-8. Il associe à tout numéro Unicode une suite d'un ou plusieurs octets (jusqu'à quatre octets pour un seul caractère). Cet encodage est décrit dans la RFC 2279. Une des propriétés importantes de cet encodage est que les caractères dont les numéros sont compris entre 32 et 126 possèdent la même représentation en UTF-8 et dans l'encodage ASCII. L'encodage UTF-8 est donc compatible avec ASCII, dans la mesure où il n'y a rien à faire pour convertir un fichier encodé en ASCII vers UTF-8. Réciproquement, si un octet représentant un nombre compris entre 32 et 126 apparaît dans un fichier encodé en UTF-8, alors c'est forcément pour encoder le caractère ASCII du même numéro."
d'après http://www.tuteurs.ens.fr/faq/utf8.html#utf8 .



  •   <<sw = new StreamWriter(@"C:\\HR.HP1.FONCT.ORG.txt", true, System.Text.Encoding.Default); Default, UTF8, ASCII cela ne change rien !>>
Il faut savoir que quand tu changes l'encodage dans ton code, durant l'exécution par exemple, ton fichier a été déjà altéré. La cohérence est perdue. Alors quoique tu fasses tu auras jamais de bons résultats.
Il vaut mieux que tu crées une copie de sauvegarde de ton fichier texte, et que tu travailles sur l'original ou un autre exemplaire. Tu supprimes manuellement à chaque fois les fichiers que tu as altéré jusqu'à ce que tu trouves le bon encodage.
Normalement avec UTF8 tu devrais t'en sortir. C'est l'encodage par défaut du stream d'ailleurs (UTF8Encoding).

Aussi, OPTIMISE ton code car il n'est pas très clair.

Voila. A+.

Okavango

Sponsorisé par Community Server


Conditions d’utilisation et Copyright
Respect de la vie privée