Special Thanks to Heath Stewart - Your tutorial helped me understand Encoding better and allowed me to write this method. Check out his tutorial here.
//@Return: Returns the name of the encoding of the file at filePath
public static string GetFileEncoding(string filePath)
{
FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
string encoding = null;
try
{
if (file.CanSeek) //if file is readable
{
byte[] bom = new byte[4]; //getting Byte-order mark
file.Read(bom, 0, 4);
if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) //utf-8
encoding = "UTF-8";
else if (bom[0] == 0xff && bom[1] == 0xfe) // ucs-2le, ucs-4le, and ucs-16le
encoding = "UCS-21e, UCS-41e, and UCS-161e";
else if (bom[0] == 0xfe && bom[1] == 0xff) // utf-16 and ucs-2
encoding = "UTF-16 and UCS-2";
else if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) //ucs-4
encoding = "UCS-4";
else //DEFAULT: ASCII
encoding = "ASCII";
}
}
catch (Exception e)
{ Console.Error.WriteLine("ERROR: " + e.Message); }
finally
{
if (file != null)
file.Close();
}
return encoding;
}

0 comments:
Post a Comment