怎么猜到的文件的编码与不物料清单。净?
-
22-08-2019 - |
题
我使用的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或什么的。更复杂的方法可以尝试和查找特定语言字符的配对,但我不知道的东西做的是图书馆或一些这样的。
我用这个做同样的事情,而回:
使用的Win32的IsTextUnicode。
在一般意义上,这是一个困难promlem。请参阅: http://blogs.msdn.com/oldnewthing/存档/ 2007/04/17 / 2158334.aspx 。
一个哈克的技术可能采取的MD5的文本,然后解码文本,并重新编码就在的各种编码,MD5清的每一个。如果一个人比赛你猜这是那个编码。
这显然太慢,处理大量的文件,但对于像一个文本编辑器我能看到它的工作。
除此之外,它将可以手脏移植java库 这个职位 来自德尔菲这样的问题,或使用即MLang功能。
请参阅我的(最近)回答这个(据我所知,当量)的问题:的如何可以检测一个文本文件的编码/代码页
它并不试图通过一系列的像MLang和NCharDet做,可能的“国家”编码猜测,而是假设你知道你是什么样的非Unicode文件可能会遇到的。据我可以从你的问题告诉,它应该相当可靠的解决你的问题(不依赖于MLang的“黑匣子”)。