Lecture des lettres en accent avec c#

midou001987
Messages postés
10
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
7 juin 2012
- 9 avril 2010 à 22:11
cs_GG29
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
- 13 avril 2010 à 13:09
salut à tous,
je suis en trin de développer une application aspx.cs et j'ai une procédure qui nécessite la lecture puis la réécriture dans le même fichier le mémé texte après une opération de filtrage avec la fonction suivante:

private string Filtrage(string ch)
{
string res="";
ch = ch.ToLower();
for (int i = 0; i < ch.Length; i++)
{
if (ch[i] == 'é' || ch[i] == 'è' || ch[i] == 'ê' || ch[i] == 'ë')
res += 'e';
else
if (ch[i] == 'à' || ch[i] == 'â' || ch[i] == 'ä')
res += 'a';
else
if (ch[i] == 'î' || ch[i] == 'ï')
res += 'i';
else
if (ch[i] == 'ô' || ch[i] == 'ö')
res += 'o';
else
if (ch[i] == 'ù' || ch[i] == 'û' || ch[i] == 'ü')
res += 'u';
else
if (ch[i] == ',' || ch[i] == '"' || ch[i] == '\'' || ch[i] == ';' || ch[i] == '!' || ch[i] == '?' || ch[i] == '$' || ch[i] == '&' || ch[i] == ')' || ch[i] == '(' || ch[i] == '.' || ch[i] == ':' || ch[i] == '-' || ch[i] == '_' || ch[i] == '-' || ch[i] == ']' || ch[i] == '[' || ch[i] == '/')
res += ' ';
else
res += ch[i];
}
return res;
}
et ce code pour l'appel de la fonction:
StreamReader sr = new StreamReader(Savetxt); //Savetxt est l'emplacement du fichier
string corps = "";
corps = sr.ReadToEnd();
corps = Filtrage(corps);
sr.Close();
StreamWriter swr = new StreamWriter(Savetxt);
swr.Write(corps);
swr.Close();
le problème est que après le filtrage
les lettres accentuées sont devienne des lettre inconnue :
spécialité => sp�cialit�;

4 réponses

cs_GG29
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
17
10 avril 2010 à 00:20
Je pense que le problème se situe à la lecture du fichier
regarde par la http://www.csharpfr.com/forum/sujet-LECTURE-FICHIER-AVEC-ACCENT-NON-RECONNU_359451.aspx

Autrement pour ta méthode de filtrage regarde la classe StringBuilder.
0
cs_GG29
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
17
10 avril 2010 à 00:23
0
midou001987
Messages postés
10
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
7 juin 2012

13 avril 2010 à 01:25
le problème est que j'ai un document Word et je le convertit en ".txt", lors du convertisse-ment les lettres accentuées dans le fichier produit sont remplacées par des carrées et ceci le convertisseur utilisée :
void DocToTxt(string docPath, string htmlPath)
{
// ouverture de Word
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
// on le cache !
app.Visible = false;
// pour les paramètres qu’on ne va pas fournir :
object o = Missing.Value;
object docFile = docPath; // chemin du doc avec transtypage
// Ouverture du document :
_Document doc = app.Documents.Open(ref docFile, ref o, ref o,
ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o,
ref o, ref o, ref o, ref o, ref o);
object fileName = htmlPath; // Chemin de destination
object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatText;//Txt
// On enregistre le doc au format texte :
doc.SaveAs(ref fileName, ref format, ref o, ref o, ref o, ref o,
ref o, ref o, ref o, ref o, ref o, ref o, ref o,
ref o, ref o, ref o);
doc.Close(ref o, ref o, ref o);
// On quitte en évitant les messages de fermeture
app.Quit(ref o, ref o, ref o);
}
0
cs_GG29
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
17
13 avril 2010 à 13:09
Il existe plusieurs format de sauvegarde. Je ne suis pas un expert mais je pense que tu devrais essayer un des deux.
wdFormatEncodedText
wdFormatUnicodeText

PS : convertisse-ment : je pense qu'on dit conversion


Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0