9

我在 vs2010 的 C# 项目中使用了一个文本文件。我添加到解决方案并将其“复制输出”设置为“始终复制”。当我使用以下代码时,它会为我提供前导三个字节或 utf8 一个字节的文本结果。我查看了 windows 资源管理器文件属性,它的大小出现 3 个字节。

public static string ReadFile(string fileName)
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream(fileName, FileMode.Open);
                FileInfo fi = new FileInfo(fileName);
                byte[] data = new byte[fi.Length];
                fs.Read(data, 0, data.Length);
                fs.Close();
                fs.Dispose();
                string text = Encoding.ASCII.GetString(data);
                return text;
            }
            catch (Exception)
            {
if(fs != null)
{
    fs.Close();
    fs.Dispose();
}
return string.Empty;
            }
        }

为什么会像上面这样?如何在没有 StreamReader 类的情况下读取文本文件?

任何帮助,代码将不胜感激。

4

1 回答 1

9

因此,您看到的这三个字节是我猜测的 unicode 文件的字节顺序标记。对于 UTF-8,它是三个字节。

您可以通过使用不带签名的 UTF-8 保存文件来避免这些情况。

于 2013-08-29T16:38:02.703 回答