我编了一个抓取网页的程序,可是都是乱码,求教各位高手
我用的是webrequest类,抓下来的网页很多都是乱码,我现在是通过先读一小部分html文本并判断是不是gb2312,是的就 用gb2312编码方式存,否则用utf-8.但是还有不少网页是乱码,各位有没有什么好的办法啊。 问题点数:20、回复次数:8Top
1 楼wxy0401(abc)回复于 2005-08-15 19:17:34 得分 10
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream strm=myHttpWebResponse.GetResponseStream();
StreamReader sr=new StreamReader(strm,Encoding.Default);
string outdata=sr.ReadToEnd();Top
2 楼andison1(黑客小子)回复于 2005-08-15 19:28:27 得分 0
对啦,怎么样才能引用这个类啊~~~Top
3 楼gazz()回复于 2005-08-15 19:54:37 得分 0
Encoding.Default
就可以了Top
4 楼andison1(黑客小子)回复于 2005-08-15 20:33:40 得分 0
那在VB.net能否也用这个啊~》~~Top
5 楼sinory(华未眠)回复于 2005-08-16 12:44:21 得分 0
一楼的方法我用过,这样用来处理 gb2312编码的网页还可以处理utf-8等就是乱码了Top
6 楼benzite(小禾)回复于 2005-08-16 13:45:32 得分 0
gzTop
7 楼iasky(iasky)回复于 2005-08-16 13:49:46 得分 0
WebClient wb=new WebClient();
byte[] pageData=wb.DownloadData(@url);
string result=Encoding.Default.GetString(pageData);Top
8 楼itfly(胡国)回复于 2005-08-16 16:25:22 得分 10
private Regex regEncoding = new Regex(@"charset=([\w-]*)\.*");
/// <summary>
/// Get a charset information from the target web uri;
/// </summary>
/// <param name="targetUri">Target web Uri</param>
/// <returns>The Encoding the website used</returns>
public Encoding GetWebEncoding(Uri targetUri)
{
Encoding enc = Encoding.ASCII;
WebClient browser = new WebClient();
string strContent = enc.GetString(browser.DownloadData(targetUri.ToString()));
Match m = regEncoding.Match(strContent);
if(m.Success)
{
return Encoding.GetEncoding(m.Groups[1].ToString());
}
return Encoding.GetEncoding("gb2312");
}Top




