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