webbrowser 中获取超链接的路径,
查看源文件的时候是urlencode的,但是我通过webbrowser获取过来的是乱码
网页的编码格式是utf-8的
此处如何编码转换??

解决方案 »

  1.   

    如果没有用过webbrowser的,给点编码转换的代码也可以的
      

  2.   

     // 获取指定网页的HTML代码
     static string GetPageSource(string URL)
     {
      Uri uri =new Uri(URL);  HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(uri);
      HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse();  hwReq.Method = "Get";  hwReq.KeepAlive = false;  //从输入的网站提取HTML源码
      StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));
      return reader.ReadToEnd();
     }你用我的代码试试看是否乱码
      

  3.   

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                if (this.webBrowser1.Url.ToString() != e.Url.ToString())
                    return;
                if (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                    return;
                HtmlDocument document = this.webBrowser1.Document;
                tosave();
                if (document.All["pagnNextLink"] != null)
                {                document.All["pagnNextLink"].InvokeMember("click");
                }
            }        private void tosave()
            {
                HtmlDocument document = this.webBrowser1.Document;
                HtmlElement atfResults = document.All["atfResults"];
                if (atfResults != null)
                {
                    HtmlElementCollection links = atfResults.GetElementsByTagName("a");
                    foreach (HtmlElement link in links)
                    {
                        HtmlElementCollection c = link.Children;
                        if (c.Count == 1 && c[0].GetAttribute("alt") == "产品详细信息")
                        {
                            string url = link.GetAttribute("href");
                            //byte[] Temp = System.Text.Encoding.UTF8.GetBytes(url);
                            //url = System.Text.Encoding.GetEncoding("gbk").GetString(Temp);
                            access.save(url);
                        }
                    }
                }        }
      

  4.   

    哦webbroeser啊~~~~~没用那个抓过连接,都是在控制台或者winform下输入网址抓连接的
      

  5.   


    你这个是用webbrowser流来修改编码的,能不能直接给一个字符串编码转换过来,你这种,我很难判断,页面代码比较乱,正则不好写
      

  6.   

    因为他这里用ajax 的,所以抓起来比较费劲
      

  7.   

    正则简单,需要什么提取什么就行了
    我的小程序用着也挺好呵呵没用过webbrowser抓连接,我真不知道该怎么说了,关于编码,我再我的程序中都是://获取页面
    StreamReader reader = new StreamReader(hwRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));//保存提取的信息
    StreamWriter writer = new StreamWriter("图像链接列表.txt",true,Encoding.UTF8);
    需要什么编码就Encoding一下就行了
      

  8.   

    http://www.cnblogs.com/acis_/articles/1363860.html这里获取过来的是整个浏览器的源文件,但是我这里如果这样就很难再获取标签了WinForm开发浏览器,WebBrowser获取页面内容,解决中文乱码C#写一个简单的浏览器,遇到一个小小的问题,即:在通过WebBrowser.DocumentText获取的页面内容是乱码System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding("gb2312"));
    string gethtml = getReader.ReadToEnd();注意:这儿使用的不是DocumentText属性获取的页面内容。UTF8编码方式,只是在读取的时候,指定为UTF8即可啊.
    System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding("utf8"));
    WebBrowser的编码可以从文档对象中获得,将代码改为如下即可。System.IO.StreamReader getReader = new System.IO.StreamReader(this.webBrowser.DocumentStream, System.Text.Encoding.GetEncoding(this.webBrowser.Document.Encoding));
    string gethtml = getReader.ReadToEnd(); 
      

  9.   

    在.NET中的字符、字符串,只有一种编码,那就是Unicode
    它就是这么定义的,不可能有其它编码的字符串存在
    其它编码只能存在于byte数组、流、文件中
      

  10.   

    http://topic.csdn.net/u/20080618/09/0b707442-f952-44a6-884d-2750677e1a42.html
      

  11.   

    虽然问题没有解决,但是基本上明白这样是不行的了,谢谢了如果有时间到
    http://topic.csdn.net/u/20110303/13/8fd229b2-211d-4eee-8379-26751b66b898.html?seed=1162696442&r=71918725
    也回复一个,我把分给你