当前位置:编程学习 > C#/ASP.NET >>

抓取网页中文乱码,求解

我抓取的网页是: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 --------------------编程问答--------------------
引用 2 楼  的回复:
你确认是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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,