Le Blog de SamsamTS

ANSI soit-il

Un jeu de mot stupide pour débuter ce nouveau post.

Pour ceux qui n'aurai pas compris, j'ai récemment rencontré un problème fort délicat en se qui concerne l'encodage de texte. Comme vous le savez certainement il en existe beaucoup, comme par exemple l'unicode, l'utf8 (amis flasheur ;) ), l'ascii, etc. et bien sur l'ANSI.
Il va s'en dire qu'il ne faut pas se mélanger les pinceaux car non seulement les codes correspondants aux caractères changent mais aussi la taille qu'ils prennent.

Le problème est apparu lorsque j'essayai d'exporter une liste au format csv pour qu'elle puisse ensuite être exploitée par Excel. Tout allais bien jusqu'à ce qu'apparaisse notre fameux '€'.
En fait le seul encodage qu'Excel arrivai à reconnaître correctement c'est l'ANSI. Il fallait donc simplement créer écrire le fichier en ANSI.

C'est là que ça se corse, comment convertir un texte depuis l'unicode vers l'ANSI en C# ? Bien qu'il existe des méthodes de conversion vers de multiples formats (utf8, utf7, ascii, etc.) il n'en existe pas pour l'ANSI. C'est un comble lorsque l'on sais que c'est Microsoft qui est à l'origine de se format d'encodage qui est très largement utilisé dans son système d'exploitation.

En cherchant un peu j'ai quand même fini par trouver la solution qui, il faut l'avouer, n'est pas tout à fait évidente, grâce à la fonction System.Text.Encoding.GetEncoding :

Code :

System.Text.Encoding ANSI = System.Text.Encoding.GetEncoding( 1252 );
sw = new System.IO.StreamWriter(strFileName, false, ANSI);

Ainsi lors de l'écriture dans le flux, l'encodage utilisé sera l'ANSI.

Vos commentaires

Le mercredi 9 août 2006 à 15:58 , commentaire par Wilkes :: #

 

Merci pour l'information.
Ca fonctionne, c'est pratique et concis.

C'est utile de le savoir pour certaines manipulation de fichier qui autrement seraient plus difficiles.

 

Le mercredi 23 août 2006 à 14:09 , commentaire par RazC# :: email :: #

 

Merci pour l'astuce, j'ai passé une demi journée à chércher.

 

Le jeudi 16 novembre 2006 à 20:11 , commentaire par Stiker :: email :: #

 

ouai moi g le problem inverse je voudrai convertir du ansi vers xls pouve vous me renseigenr
merci d'avance

 

Le jeudi 16 novembre 2006 à 23:47 , commentaire par SamsamTS :: #

 

Stiker > je ne comprends pas bien ton problème, le xls n'est pas un encodage mais un format de ficher, ta phrase ne veux rien dire.

Pour les conversions d'encodage regarde du coté de GetEncoding (voir le lien dans le billet).

 

Le mardi 10 avril 2007 à 16:40 , commentaire par chilirecords :: email :: #

 

Oui merci beaucoup, moi aussi j'y ai passé une demi journé sur ce :cogne: d'encodage !

 

Le jeudi 24 avril 2008 à 17:08 , commentaire par ForceMagic :: email :: #

 

Merci, c'est toi que j'ai trouvé en premier avec mon ami google !  :D

 

Le lundi 1 février 2010 à 17:40 , commentaire par JavaDZ :: #

 

Merci tu m as sauvé

 

Ajouter un commentaire