StreamReader не может правильно прочитать расширенный набор символов (UTF8)

У меня проблема, когда я не могу прочитать файл, содержащий иностранные символы. Файл, как мне сказали, закодирован в формате UTF-8.

Вот ядро ​​моего кода:

using (FileStream fileStream = fileInfo.OpenRead())
{
    using (StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.UTF8))
    {
        string line;

        while (!string.IsNullOrEmpty(line = reader.ReadLine()))
        {
            hashSet.Add(line);
        }
    }
}

В файле содержится слово "achôcre", но при рассмотрении его во время отладки он добавляет его как "ach cre".

(Это файл профанации, поэтому я приношу свои извинения, если вы говорите по-французски. Я для одного, не знаю, что это значит)

Ответ 1

В доказательствах очевидно, что файл не находится в формате UTF-8. Попробуйте System.Text.Encoding.Default и посмотрите, если вы получите правильный текст, тогда - если вы это сделаете, вы знаете, что файл находится в Windows-1252 (при условии, что это ваша системная кодовая страница по умолчанию). В этом случае я рекомендую открыть файл в "Блокноте", а затем "Сохранить как" это как UTF-8, а затем вы можете обычно использовать Encoding.UTF8.

Еще один способ проверить, в какой кодировке находится файл, - открыть его в своем браузере. Если акценты отображаются правильно, браузер обнаружил правильный набор символов, поэтому посмотрите меню "Просмотр/набор символов", чтобы узнать, какой из них выбран. Если акценты отображаются неправильно, измените набор символов через это меню, пока они не сделают.