2010-01-25 4 views
0

J'ai essayé string[] file = File.ReadAllLines(file_name) de lire un fichier Word.Comment se débarrasser des caractères spéciaux au début, tout en utilisant File.ReadAllLines en C#

En mode debug j'ai trouvé que les premiers arguments du fichier de tableau de chaînes ont des valeurs telles que

"��ࡱ�0\0\0\0>\0\0��\t\0\0\0\0\0". Comment puis-je le débarrasser de ça.

Dans certains fichiers, les 3 premiers arguments du fichier [] sont remplis avec ceux-ci tandis que pour quelques fichiers seul le premier argument est rempli avec ces caractères non modifiables.

Quel est le problème et comment puis-je me débarrasser de cela? Mais mon fichier Word n'a même pas de ligne blanche au début.

Répondre

3

Le problème est que vous n'ouvrez pas le fichier avec l'encodage correct. Here est un guide d'ouverture et de création de documents Word à partir de C#.

1

Si vous utilisez .NET 3.5 alors je vous suggère d'utiliser une LINQ clause where pour revenir seulement les lignes qui vous intéressent.

string[] file = File.ReadAllLines(file_name).Where(line => !line.StartsWith("��")).ToArray(); 

Vous pouvez également utiliser une certaine forme de régulière expression au lieu de la méthode line.StartsWith(). Si vous lisez des fichiers Microsoft Office Word, je vous recommande d'utiliser la bibliothèque COM Interop ou une bibliothèque tierce pour lire le document MS Word (vous trouverez cela beaucoup plus facile que d'essayer d'analyser le fichier). toi même).

2

File.ReadAllLines est destiné aux fichiers texte. Les fichiers Word sont et non fichiers texte. Pour lire des fichiers Word, vous pourriez avoir besoin d'une bibliothèque.

1

Les fichiers Word ne sont pas de simples fichiers texte. De ce fait, des informations binaires supplémentaires seront incorporées.

Vous devez utiliser une bibliothèque qui lit les documents Word si vous souhaitez extraire le texte correctement, au lieu de File.ReadAllLines.

Voici couple de tel libraries.

Questions connexes