我使用的StreamReader类。净是这样的:

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

这个工作文件时所具有的物料清单。我遇到了麻烦有一个文件没有BOM..基本上我胡言乱语。当我的指定编码。Unicode它工作得很好,例如:

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

因此,我需要得到文件内容成一串。因此,如何做人通常处理这个吗?我知道有没有解决方案,将工作100%的时间,但我想提高我的几率..显然软件在那里,试图猜测(例如,记事本,浏览器,等等)。是否有一个方法。净框架,该框架将猜我吗?任何人都不会有一些代码,他们想与大家分享?

更多的背景:此 的问题 是很多和我一样,但我在。净的土地。这个问题导致我的博客清单的各个 编码检测 图书馆,但没有。净

其他提示

您应该阅读这篇文章的雷蒙德陈。他进入细节上的程序可以怎么猜到的编码是什么(以及一些来自猜测的乐趣)

http://blogs.msdn.com/oldnewthing /archive/2004/03/24/95235.aspx

我不得不好运与慧普德 ,一个C#端口的Mozilla Universal Charset Detector

UTF-8被设计成在一种方式,它不太可能有在任意的8位编码像latin1的编码文本使用UTF-8被解码以适当的Unicode。

所以最小的方法是这样的(伪代码,我不说话.NET):

尝试:    U = some_text.decode( “UTF-8”) 除了UnicodeDecodeError错误:    U = some_text.decode( “最可能编码”)

有关的最可能编码一个通常使用例如LATIN1或CP1252或什么的。更复杂的方法可以尝试和查找特定语言字符的配对,但我不知道的东西做的是图书馆或一些这样的。

我用这个做同样的事情,而回:

http://www.conceptdevelopment.net/Localization/NCharDet/

使用的Win32的IsTextUnicode。

在一般意义上,这是一个困难promlem。请参阅: http://blogs.msdn.com/oldnewthing/存档/ 2007/04/17 / 2158334.aspx

一个哈克的技术可能采取的MD5的文本,然后解码文本,并重新编码就在的各种编码,MD5清的每一个。如果一个人比赛你猜这是那个编码。

这显然太慢,处理大量的文件,但对于像一个文本编辑器我能看到它的工作。

除此之外,它将可以手脏移植java库 这个职位 来自德尔菲这样的问题,或使用即MLang功能。

请参阅我的(最近)回答这个(据我所知,当量)的问题:的如何可以检测一个文本文件的编码/代码页

它并不试图通过一系列的像MLang和NCharDet做,可能的“国家”编码猜测,而是假设你知道你是什么样的非Unicode文件可能会遇到的。据我可以从你的问题告诉,它应该相当可靠的解决你的问题(不依赖于MLang的“黑匣子”)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top