2010-02-10 7 views
3

Ce que j'essaie de faire est de lire tout le texte dans un fichier et s'il contient le mot "Partager" faire une regex. Voici le code:C# File.ReadallText faire des choses étranges

DirectoryInfo dinfo = new DirectoryInfo(@"C:\Documents and Settings\g\Desktop\123"); 
     FileInfo[] Files = dinfo.GetFiles("*.txt"); 
     foreach (FileInfo filex in Files) 
     { 
      string contents = File.ReadAllText(filex.FullName); 
      string matchingcontants = "Share"; 
      if (contents.Contains(matchingcontants)) 
      { 
       string sharename = Regex.Match(contents, @"\+(\S*)(.)(.*)(.)").Groups[3].Value; 
       File.AppendAllText(@"C:\sharename.txt", sharename + @"\r\n"); 
      } 

     } 

Quand je debug je reçois ... contenu = « \ r \ 0 \ n \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 = \ 0 \ r \ 0 \ n \ 0 \ 0 \ 0S \ 0h \ 0a \ 0r \ 0e \ 0 \ 0 \\ 0 \\ 0j \ 05 \ 02 \ 0 \\ 0W \ 0W \ 0W \ 0_ \ 0O \ 0n \ 0t \

\ 0S \ 0h \ 0a \ 0r \ 0e \

pas partager. Tous les conseils? des conseils ou des suggestions?

Répondre

7

On dirait que vous avez un fichier qui est enregistré en tant que UTF-16 (c.-à-d. Encoding.Unicode). Lisez le fichier avec le bon encodage, et tout devrait bien se passer.

Heureusement, il y a une surcharge de File.ReadAllText qui prend un codage:

string contents = File.ReadAllText(filex.FullName, Encoding.Unicode); 

Malheureusement, ce sera alors faire la mauvaise chose pour les fichiers qui ne sont pas en UTF-16. Bien qu'il existe des moyens heuristiques de deviner l'encodage, idéalement, vous devriez connaître l'encodage avant d'ouvrir le fichier.

2

On dirait que c'est un fichier Unicode, et que vous essayez de le lire en ASCII simple

+0

En fait, sans rien spécifier d'autre, il va essayer de lire le fichier comme UTF-8. –

2

Je suppose que le codage n'est pas défini correctement, vous devrez peut-être utiliser ReadAllText (String, Encoding) en spécifiant le codage.

Questions connexes