使用httpwebrequest抓取网页时,如何自动识别网页的编码?有没有什么好的解决办法?谢谢

解决方案 »

  1.   

    用正则提取<meta charset信息
      

  2.   

    HttpWebRequest re = new HttpWebRequest();
    道re.Headers应该有吧?
      

  3.   

    用以前用过先ReadLine取得<meta http-equiv="content-type" content="text/html;charset=gb2312">这样的信息,提取出编码后,再ReadToEnd取得整页,不知道有没有更简捷的方法
      

  4.   

    使用charset有时并不行,尤其是对于生成的静态页面
      

  5.   

    HttpWebResponse.CharacterSet property
      

  6.   

    我觉得应该优先参考meta,其次才是header。
      

  7.   

    获取GetResponseStream,分析meta的charset的值,以下代码只判断utf-8,其余的编码类型可以根据自己情况添加。                WebRequest request = WebRequest.Create(pageUrl);
                    WebResponse response = request.GetResponse();
                    byte[] buffer = new byte[1500];
                    Stream stream = response.GetResponseStream();
                    stream.Read(buffer, 0, buffer.Length);
                    page = Encoding.Default.GetString(buffer);                                string patternEncode = @"(?<=<\s*meta[^>]+charset\s*=\s*)utf-8";
                    Regex regEncode = new Regex(patternEncode, RegexOptions.IgnoreCase);
                    Match match = regEncode.Match(page);
                    if (match.Success)
                    {
                        encode = Encoding.UTF8;
                    }                wc.Encoding = encode;                page = wc.DownloadString(pageUrl);
      

  8.   

    使用meta并不能完全解决,有的页面并不包含charset信息怎么办?