Почему Пустой текстовый файл содержит 3 байта?

Я использую текстовый файл внутри моего проекта C# в vs2010. Я добавил в решение и установил его " копировать вывод "в" копировать всегда". Когда я использую следующие коды, он дает мне текстовый результат с ведущими тремя байтами или в utf8 один байт. Я посмотрел свойства файла Windows explorers, его размер отображается 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?

любая помощь, коды будут очень оценены.

1 ответов


Итак, эти три байта, которые вы видите, являются маркер порядка байтов для файла unicode я предполагаю. Для UTF-8, это три байта.

вы можете избежать этого, сохранив файл с помощью UTF-8 без подписи.