首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

采摘HTML源码 -乱码

2012-07-29 
采集HTML源码 ---乱码大家好: 想试试做一个采集HTML中的内容 ,但有一些网站的采集出现乱码。虽然说如果第一

采集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);
这种编码的时候最好别用默认的,指定具体编码下试试

热点排行