Conversion ascii vers UTF8

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 11 févr. 2008 à 18:15
vivasola Messages postés 6 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 13 mai 2011 - 9 août 2010 à 02:22
Bonjour,

Je travaille actuellement sur un programme dans lequel j'extrait des données d'un fichier texte comportant des caractères japonais vers un autre que je créé en utilisant les fonctions StreamReader et Streamwriter.

Me voilà confronté au problème suivant, les caractères finlandais sont remplacés par des symboles dans le fichier créé par StreamWriter.

Pourtant j'ai testé tous les formats d'encoding, mais rien n'y fait.
En revanche j'utilise le logiciel UltraEdit, et lorsqu'avant d'éxecuter mon programme j'effectue sous UE l'operation conversion ASCII -> UTF8, alors ma fonction Streamwriter fonctionne et me renvoie les caractères accentués...

Voici le code même si je doute que se soit d'une grande utilité :)

                StreamReader rd = new StreamReader(path);
                StreamWriter writer1 = new StreamWriter(@finalpath, true, System.Text.Encoding.UTF8);

                 string line;

                 While ((line = rd.ReadLine()) != null)
                 {
                    writer1.WriteLine((line.Substring(0,28)) + "0" + (line.Substring(36,2)) + (line.Substring(41,1)) +                           (line.Substring(42,2)) + " " + (line.Substring(48,55)));
                 }
                 rd.Close();
                 writer1.Close();

Au final, je souhaiterais savoir s'il existe un moyen de convertir mon fichier source en UTF8 en amont, avant de passer ma fonction Streamwriter dessus.

En esperant que vous m'ayez compris,
Merci d'avance,
Cordialement, Anz.

3 réponses

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
11 févr. 2008 à 21:47
Re ;p

En fait j'ai trouvé, le pb venait donc bien de l'encodage à la lecture, voici donc la solution pour ceux que ça interesse:

StreamReader rd = new StreamReader(path,UTF8Encoding.Default);

tout simplement !

Merci,

Anz.
                    
0
bloodybaron Messages postés 1 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 10 juillet 2010
10 juil. 2010 à 00:57
Merci beaucoup,

J'ai passé la soirée à jouer avec Google et les APIs d'encodings de .Net, avant de tomber sur ton post, et appeler cette bonne surcharge du constructeur de SreamReader !!

Tu me sauves la vie :p

Bloodybaron
0
vivasola Messages postés 6 Date d'inscription mardi 29 mai 2007 Statut Membre Dernière intervention 13 mai 2011
9 août 2010 à 02:22
bonjour ;
je suis entain de developer une appllication ASP.NET/C#, avec SGBD MySql, avec la langue arabe comme langue de manipulation, voila ce que j'ai fai :
1) creation de la base avec les champs de chaine de caractère
ex : `Libelle` VARCHAR(45) CHARACTER SET utf8 NULL ,
2) au niveau de la page Asp j'ai ajouté
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

et quand j'ajoute dans la base avec la langue arabe sa s'ajout,
et j'ai verifié sous Mysql et c Ok ça ajoute de l'arabe,
!!!! mais le problème,c'est quand je veux afficher l'un des enregistrement dans un champ " Textbox " je ne voi que des "????"
voila le code :
//accesDB : c'est une class que j'utilise pour l'acces a la BD
protected void Page_Load(object sender, EventArgs e)
{
string ch = "select * from nationalite";
accesDB A = new accesDB();
MySQLDataReader dr = A.ExecutSELECT(ch);
dr.Read();
this.T.Text = dr.GetString(1);
}
SVP si vous pouvez m'aider, car je suis en stage et mon application compte sur cela.
et merci d'avance.
0
Rejoignez-nous