public static Encoding GetFileEncoding(string fileName) {
/*byte[] Unicode=new byte[]{0xFF,0xFE};
byte[] UnicodeBIG=new byte[]{0xFE,0xFF};
byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/
try {
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default);
byte[] ss = r.ReadBytes(3);
r.Close();
fs.Close();
fs.Dispose();
if (ss[0] >= 0xEF) {
if (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF)
return System.Text.Encoding.UTF8;
else if (ss[0] == 0xFE && ss[1] == 0xFF)
return System.Text.Encoding.BigEndianUnicode;
else if (ss[0] == 0xFF && ss[1] == 0xFE)
return System.Text.Encoding.Unicode;
else
return System.Text.Encoding.Default;
} else return System.Text.Encoding.Default;
} catch {
return System.Text.Encoding.Default;
}
}
读文件之前先调用此方法取文件的编码。按取到的编码打开文件就不是乱码了。
web.config中加上全局配置看看:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="" culture="auto" uiCulture="auto" enableClientBasedCulture="false" responseHeaderEncoding="utf-8" resourceProviderFactoryType="" enableBestFitResponseEncoding="false"/>
应该是直接将html交给asp.net解析的问题吧,你可批量把服务器上的HTML编码改成和web.config的统一。