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); } } }