Vous devez utiliser le bon codage pour le fichier. Savez-vous ce qu'est cet encodage? Il pourrait être UTF-16, alias Encoding.Unicode, ou peut-être quelque chose comme Big5. Vraiment, vous devriez essayer de trouver à coup sûr au lieu de deviner si.
Comme la réponse de Leppie mentionné, le problème pourrait également être les capacités de la console. Pour en être sûr, vider les valeurs de caractères Unicode de la chaîne sous la forme de nombres. Voir mon article on debugging unicode issues pour plus d'informations et une méthode utile pour le vidage du contenu d'une chaîne. J'éviterais également d'utiliser le code que vous utilisez actuellement pour lire un fichier ligne par ligne. Au lieu de cela, utiliser quelque chose comme:
using (StreamReader sr = new StreamReader(path, appropriateEncoding))
{
string line;
while ((line = sr.ReadLine()) != null)
{
// ...
}
}
appel Peek() exige que le flux est capable de chercher, ce qui peut être vrai pour les fichiers, mais pas tous les cours d'eau. Regardez aussi dans File.ReadAllText et File.ReadAllLines si c'est ce que vous voulez faire - ce sont des méthodes utilitaires très pratiques.
Réponse plus utile! Merci – CodeGuru