问题 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”。

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


9108
2017-07-11 23:50


起源



答案:


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

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


16
2017-07-11 23:56



看起来你是对的。谢谢你的浏览器提示! - PolandSpring


答案:


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

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


16
2017-07-11 23:56



看起来你是对的。谢谢你的浏览器提示! - PolandSpring