Lecture des lettres en accent avec c#

Signaler
Messages postés
10
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
7 juin 2012
-
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
-
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

Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
14
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.
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
14
Messages postés
10
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
7 juin 2012

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);
}
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
14
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.