抓取网页中文乱码,求解
我抓取的网页是: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是乱码(英文系统)
我请教各位大虾的是在编程的时候怎样抓取网页代码是正常的。
不能用以下方法:在系统安装中文补丁。(代码适应系统,非系统适应代码)。
我曾找解码的方法,没试成功,可能方法有误。哪位大虾请帮帮忙。急急急!!
--------------------编程问答-------------------- IE打开也是乱码吧
--------------------编程问答-------------------- 你确认是UTF8 --------------------编程问答--------------------
我确认那个网站http://www.newegg.com.cn 的编码是 gb2312,可是我的系统是英文系统,只能支持utf8的格式才正确显示,抓取回来的源代码,中文都是乱码,这过程中该怎样转换?谢谢。 --------------------编程问答-------------------- Encoding.UTF8这个不能随便乱写呀,要检测编码的。而且很多网站HTML里声明的编码和发送的编码不一致……这个只能靠词频了,IE有个IMultiLanguage的API,FireFox和Chrome的实现都可以自己去翻源代码 --------------------编程问答--------------------
用default默认编码试试
--------------------编程问答-------------------- string content;
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;
}
}
正常 已测试! --------------------编程问答-------------------- 最近做垂直搜索. --------------------编程问答-------------------- StreamReader sr = new StreamReader(resStream, Encoding.GetEncoding("gb2312"));
这样? --------------------编程问答-------------------- StreamReader reader = new StreamReader(WebRequest.Create(requestUri).GetResponse().GetResponseStream(), Encoding.Default); --------------------编程问答-------------------- Uri requestUri = new Uri("http://www.newegg.com.cn); --------------------编程问答--------------------
gb2312 你用utf8请求当然乱码了
试试 Encoding.GetEncoding("gbk")
补充:.NET技术 , C#