PM信息不可以那么长。。。只好贴这里了。
先用StreamReader去读取,然后判断是否为UTF8编码,再决定读取流时以何种编码格式读取。判断的小函数在下边。
System.IO.StreamReader sr;
if (newFun.IsUTF8(new System.IO.FileStream(FileToRead.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)))
{
sr = new System.IO.StreamReader(FileToRead.FullName, Encoding.UTF8);
}
else
{
sr = new System.IO.StreamReader(FileToRead.FullName, Encoding.Default);
}
///
/// 判断该文件是否UTF8编码
/// ///
需要判断的文件流
///
public bool IsUTF8(FileStream sbInputStream)
{
int i;
byte cOctets; // octets to go in this UTF-8 encoded character
byte chr;
bool bAllAscii = true;
long iLen = sbInputStream.Length;
cOctets = 0;
for (i = 0; i < iLen; i++)
{
chr = (byte)sbInputStream.ReadByte();
if ((chr & 0x80) != 0) bAllAscii = false;
if (cOctets == 0)
{
if (chr >= 0x80)
{
do
{
chr <<= 1;
cOctets++;
}
while ((chr & 0x80) != 0);
cOctets--;
if (cOctets == 0) return false;
}
}
else
{
if ((chr & 0xC0) != 0x80)
{
return false;
}
cOctets--;
}
}
if (cOctets > 0)
{
return false;
}
if (bAllAscii)
{
return false;
}
return true;
}
------------------------------
P.S.谢谢楼上的支持,不过这个版本我上次用错了某个文件,ED2K的计算有文件长度计算限制,我过阵子会改进发布新版本的……最近就没法了,宿舍没网上,55555555555555…………