如果文件中包含任何一个最高位设置的字节,则它不是ASCII。因此,如果唯一的可能性是ASCII或UTF-8,则它是UTF-8。如果文件只包含最高位清除的字节,则区分它是ASCII还是UTF-8没有意义,因为无论哪种方式都表示完全相同的字符序列。但你可以称它为ASCII。当然,这并不能区分UTF-8和ISO Latin或CP1252,也不能确认所谓的UTF-8是否有效。
http://msdn.microsoft.com/en-us/library/dd318672%28v=vs.85%29.aspx IsTextUnicode 函数 确定缓冲区是否可能包含一种 Unicode 文本形式。