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
Rejoignez-nous