A StreamReader will try to automatically detect the encoding of a file if there's a BOM when trying to read:
public class Program
{
static void Main(string[] args)
{
using (var reader = new StreamReader("foo.txt"))
{
// Make sure you read from the file or it won't be able
// to guess the encoding
var file = reader.ReadToEnd();
Console.WriteLine(reader.CurrentEncoding);
}
}
}