2010-10-08 27 views
1

Je lis les données d'un fichier TXT qui me demande de remplacer certaines des données existantes, puis de les réécrire dans le fichier. Le problème est qu'il y a des caractères spéciaux dans le fichier qui sont corrompus lorsque j'écris le texte dans le fichier. Par exemple, j'ai une chaîne dans un fichier "foo.txt" qui a le "€ rdrf + À [HIGH]" suivant. Mon application lit le texte dans une chaîne, passe par la ligne et remplace [HIGH] par une valeur, puis réécrit dans le fichier. Le problème est, les caractères de texte spéciaux sont corrompus.La lecture des données à partir du fichier est endommagée

Voici une version abrégée de la base de code:

string fileText = System.IO.File.ReadAllText("foo.txt"); 
fileText= iPhoneReferenceText.Replace("[HIGH]", low); 
TextWriter tw = new StreamWriter("Path"); 
tw.WriteLine(fileText); 
tw.Close(); 

Comment puis-je lire à partir du fichier sans altérer les caractères spéciaux de texte?

Merci Jay

Répondre

1

Vous devez posséder un codage approprié, je pense que

string fileText = System.IO.File.ReadAllText("foo.txt", Encoding.XXXX); 
. 
. 
tw = new StreamWriter("path", Encoding.XXXX); 
. 
. 

XXXX est l'un des:

System.Text.ASCIIEncoding 
    System.Text.UnicodeEncoding 
    System.Text.UTF7Encoding 
    System.Text.UTF8Encoding 
0

Essayez ceci:

 string filePath = "your file path"; 
     StreamReader reader = new StreamReader(filePath); 
     string text = reader.ReadToEnd(); 
     // now you edit your text as you want 
     string updatedText = text.Replace("[HIGH]", "[LOW]"); 

     reader.Dispose(); //remember to dispose the reader so you can overwrite on the same file 
     StreamWriter writer = new StreamWriter(filePath); 
     writer.Write(text, 0, text.Length); 
     writer.Dispose(); //dispose the writer 
     Console.ReadLine(); 

N'oubliez pas d'éliminer après avoir terminé le lecteur et l'écrivain.