通过HttpWebRequest获取页面的Encoding

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

今天在做一个简单的Web爬虫,用.Net的HttpWebRequest获取页面信息,然后通过Regex获取页面上的连接,进行递归爬取,开始对http://blog.sunmast.com(Encoding为UTF-8)进行爬去的时候没有发现任何错误。爬取的东西显示正常,结果对其他一些中文网站(Encoding为GB2312)进行爬去的时候,获得的都为乱码,这也是必然,于是修改代码为:

HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.163.com");

req.AllowAutoRedirect = true;

req.MaximumAutomaticRedirections = 3;

req.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";

req.KeepAlive = true;

req.Timeout = 4000;

// Get the stream from the returned web response

HttpWebResponse webresponse = null;

try

{

webresponse = (HttpWebResponse) req.GetResponse();

}

catch(System.Net.WebException ex)

{

string message = "error response exception:" + ex.Message;

Console.WriteLine(message);

}

if (webresponse != null)

{

StreamReader stream = new StreamReader

(webresponse.GetResponseStream(), Encoding.GetEncoding("GB2312") );

// TODO...

}

但是,用这样的程序来获取utf-8编码的中文网站,同时又会变成乱码。查看MSDN,看到HttpWebResponse有 ContentEncoding 和 CharacterSet,于是希望根据获得的网页的编码类型来进行StreamReader的编码。于是编码测试,可是却发现测试了很多网站(包括Microsoft,Sina)等,却都无法获取这两个参数,输出的结果均为string.Empty。在Google和Baidu上搜索不到此类问题的解决方案,在CodeProject找到两篇Article,却都是通过HttpWebResponse.ContentEncoding 属性获取页面的编码,可是我获取的为什么都是空字符串?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航