我抓取的网页是:http://www.newegg.com.cn 网页的编码是gb2312.我用的系统是英文系统,无论怎么改抓取的源代码都是乱码,中文系统是没问题。下面是我写的Code:
WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.UTF8); //试过用default,utf-8抓取的网页源代码都是乱码
string result= sr.ReadToEnd();
返回的result是乱码(英文系统)我请教各位大虾的是在编程的时候怎样抓取网页代码是正常的。不能用以下方法:在系统安装中文补丁。(代码适应系统,非系统适应代码)。我曾找解码的方法,没试成功,可能方法有误。哪位大虾请帮帮忙。急急急!!
WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.UTF8); //试过用default,utf-8抓取的网页源代码都是乱码
string result= sr.ReadToEnd();
返回的result是乱码(英文系统)我请教各位大虾的是在编程的时候怎样抓取网页代码是正常的。不能用以下方法:在系统安装中文补丁。(代码适应系统,非系统适应代码)。我曾找解码的方法,没试成功,可能方法有误。哪位大虾请帮帮忙。急急急!!
我确认那个网站http://www.newegg.com.cn 的编码是 gb2312,可是我的系统是英文系统,只能支持utf8的格式才正确显示,抓取回来的源代码,中文都是乱码,这过程中该怎样转换?谢谢。
string url = "http://www.newegg.com.cn";
bool success = getWebContent(url, "post", "gbk", out content);
if (success)
{
Response.Write(content);
}
------------------------------------------
public static bool getWebContent(string strURL, string method, string encodingType, out string buf)
{
buf = "";
try
{
HttpWebRequest request = null;
request = (HttpWebRequest)WebRequest.Create(strURL);
request.Method = method; //请求方式
request.ContentType = "text/html"; //内容类型 string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码
byte[] payload;
payload = System.Text.Encoding.GetEncoding(encodingType).GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节 request.ContentLength = payload.Length; //设置请求的ContentLength Stream writer = request.GetRequestStream(); //获得请求流
writer.Write(payload, 0, payload.Length); //将请求参数写入流
writer.Close(); //关闭请求流 HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse(); //获得响应流 Stream s;
s = response.GetResponseStream(); StreamReader objReader = new StreamReader(s, System.Text.Encoding.GetEncoding(encodingType)); string HTML = "";
string sLine = "";
int i = 0; while (sLine != null)
{
i++;
sLine = objReader.ReadLine();
if (sLine != null)
{
HTML += sLine;
}
}
buf = HTML;
if (HTML == "")
{
return false;
}
else
{
return true;
}
}
catch (Exception e)
{
Console.WriteLine("页面读取异常:" + e.Message);
return false;
}
}
正常 已测试!
这样?