蜘蛛抓取页面的转码问题

由于不同网站的网页格式不一样,通用的都是utf-8,但是也有gb2312的情况,不同格式的网页,存入数据库再读取的时候会转成乱码,
这就是我们当下要解决的问题
1
public class Network
2 {
3 /// 获得页面的html代码
4 /// </summary>
5 /// <param name="url">页面地址</param>
6 public static string GetHtml(string url)
7 {
8 string html = "";
9 try
10 {
11 WebClient MyWebClient = new WebClient();
12
13 Encoding utf8 = Encoding.UTF8;
14
15 Encoding defaultCode = Encoding.Default;
16
17 MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
18
19 Byte[] pageData = MyWebClient.DownloadData(url);//从指定网站下载数据
20 string pageHtml = Encoding.Default.GetString(pageData);
21 string Encodeing = getEncoding(pageHtml);
22 if (Encodeing != "GB2312" && Encodeing != "GBK")
23 {
24 byte[] defaultBytes = Encoding.Convert(utf8, defaultCode, pageData);
25 pageHtml = Encoding.Default.GetString(defaultBytes); //如果获取网站页面采用的是GB2312,则使用这句
26 }
27
28 html = pageHtml;
29 }
30 catch (WebException webEx)
31 {
32 Console.WriteLine(webEx.Message.ToString());
33 }
34 return html;
35 }
36 public static string getEncoding(string html)
37 {
38 Match match = Regex.Match(html, "charset=(?'ecncoding'.*[\\d|k|K])\"");
39 GroupCollection groups = match.Groups;
40 string ecncoding = groups["ecncoding"].Value;
41 return ecncoding.ToUpper();
42 }
43 }

posted @ 2011-06-30 17:07  程序新青年  阅读(234)  评论(0)    收藏  举报
============================================================================== 青春匆匆,很多人都有自己的座右铭,鞭策自己前进,当没看到座右铭的时候又忘了自己要干什么,就这样天天立志,志天天立,最终还是那个初出茅庐的小菜鸟。从现在开始,慢慢去改掉懒惰的习惯。慢慢去加强学习,直到慢慢成功。==============================================================================