static FileEncoding DetermineUnicodeWhenFirstCharIsAscii(string path)
{
using (BinaryReader br = new BinaryReader(File.Open(path, FileMode.Open, FileAccess.Read)))
{
byte[] startBytes = br.ReadBytes(4);
if (startBytes.Length == 0) return FileEncoding.none;
if (startBytes.Length == 1 || startBytes.Length == 3) return FileEncoding.utf8;
if (startBytes.Length == 2 && startBytes[0] != 0) return FileEncoding.utf16le;
if (startBytes.Length == 2 && startBytes[0] == 0) return FileEncoding.utf16be;
if (startBytes[0] == 0 && startBytes[1] == 0) return FileEncoding.utf32be;
if (startBytes[0] == 0 && startBytes[1] != 0) return FileEncoding.utf16be;
if (startBytes[0] != 0 && startBytes[1] == 0) return FileEncoding.utf16le;
return FileEncoding.utf8;
}
}
FileEncoding GetEncoding(EncodingClass encodingClass, UnicodeDetection detection, string path)