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

时间:2011-07-11 23:50:29

标签: 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);
        }
    }
}

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

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

1 个答案:

答案 0 :(得分:16)

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

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