如何在.NET中猜测没有BOM的文件的编码?

6 .net c# unicode encoding character-encoding

我在.NET中使用StreamReader类,如下所示:

using( StreamReader reader = new StreamReader( "c:\somefile.html", true ) {
    string filetext = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

当文件有BOM时,这可以正常工作.我遇到了没有BOM的文件的麻烦..基本上我得到了胡言乱语.当我指定Encoding.Unicode它工作正常,例如:

using( StreamReader reader = new StreamReader( "c:\somefile.html", Encoding.Unicode, false ) {
    string filetext = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要将文件内容转换为字符串.那么人们通常如何处理这个呢?我知道没有解决方案可以100%的时间工作,但我想提高我的赔率..显然有那些试图猜测的软件(例如,记事本,浏览器等)..NET框架中是否有一种方法可以猜测我?有没有人有他们想分享的代码?

更多背景:这个问题和我的问题差不多,但我在.NET领域.这个问题让我进入了一个列出各种编码检测库的博客,但没有一个在.NET中