当前位置: 代码迷 >> ASP.NET >> 采摘HTML源码 -乱码
  详细解决方案

采摘HTML源码 -乱码

热度:8674   发布时间:2013-02-25 00:00:00.0
采集HTML源码 ---乱码
大家好: 想试试做一个采集HTML中的内容 ,但有一些网站的采集出现乱码。
虽然说如果第一个采集有问题 就换一个编码,但还是有问题
以下是代码
C# code
     public static  string AutoHtml(string url)      {          if (url.ToLower().IndexOf("http://")==-1)          {              url = "http://" + url;          }          WebClient myWebClient = new WebClient();          myWebClient.Credentials = CredentialCache.DefaultCredentials;          byte[] myDataBuffer = null;          try          {             myDataBuffer=myWebClient.DownloadData(url);          }          catch { return null; }         //          string dd = System.Text.Encoding.UTF8.GetString(myDataBuffer);         //                   string strWebData = Encoding.Default.GetString(myDataBuffer);         // strWebData = " <title></title><meta  charset=gb2312 />";         // string strRegex = @"charset=['""]?(.*?)['""]?\r\n/>";          //Match charSetMatchs = Regex.Match(strWebData, strRegex, RegexOptions.IgnoreCase);           //Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);          //MatchCollection m = r.Matches(strWebData);          //获取网页字符编码描述信息          Match charSetMatch = Regex.Match(strWebData, @"charset=['""]?(.*?)['""]?\s?/>", RegexOptions.IgnoreCase);           string webCharSet = charSetMatch.Groups[1].Value;          if (string.IsNullOrEmpty(webCharSet))          {              webCharSet = "utf-8";          }   //换一个编码          strWebData = Encoding.GetEncoding(webCharSet).GetString(myDataBuffer);          return strWebData;      }

采集 www.xiaomi.com的时候出现乱码。。。应该如何 解决,原因是?

------解决方案--------------------------------------------------------
Encoding encoding = Encoding.GetEncoding(webBrowser.Document.Encoding);
StreamReader stream = new StreamReader(webBrowser.DocumentStream, encoding);
File.WriteAllText(@"C:\mzwu.txt", stream.ReadToEnd(), Encoding.Unicode);
MessageBox.Show(DateTime.Now.ToString() + ": 页面内容获取完成! ");
------解决方案--------------------------------------------------------
是不是有些站点的编码和你不同,就是有些必须是gb2312有些是utf-8啊 ,具体的不了解啊,帮顶
------解决方案--------------------------------------------------------
Encoding.Default.GetString(myDataBuffer);
这种编码的时候最好别用默认的,指定具体编码下试试
  相关解决方案