StreamReader无法正确读取扩展字符集(UTF8)

Pol*_*ing 11 c# unicode streamreader

我有一个问题,我无法读取包含外来字符的文件.据我所知,该文件采用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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该文件包含单词"achôcre",但在调试期间检查时,它将其添加为"ach cre".

(这是一个亵渎文件,所以如果你说法语我会道歉.我一个人,不知道这意味着什么)

Tim*_*mwi 16

证据清楚地表明该文件不是 UTF-8格式.尝试System.Text.Encoding.Default看看你是否得到了正确的文本 - 如果你这样做,你知道该文件在Windows-1252中(假设这是你的系统默认代码页).在这种情况下,我建议您在记事本中打开文件,然后将其另存为"另存为"UTF-8,然后您可以正常使用Encoding.UTF8.

检查文件实际编码方式的另一种方法是在浏览器中打开它.如果重音显示正确,则浏览器检测到正确的字符集 - 因此请查看"视图/字符集"菜单以找出选择的字符集.如果重音没有正确显示,则通过该菜单更改字符集,直到它们为止.