我在获取HTML页面时遇到的编码问题,比如下载CSDN主页,其HTML文件的charset=utf-8
但是我用如下方法获取页面:            HttpWebRequest m_Request = (HttpWebRequest)WebRequest.Create("http://www.csdn.net");
            HttpWebResponse m_Response = (HttpWebResponse)m_Request.GetResponse();            Stream receive = m_Response.GetResponseStream();            StreamReader reader = new StreamReader(receive, Encoding.GetEncoding("iso-8859-1"));
            String result = reader.ReadToEnd();在StreamReader中如果我设置是iso-8859-1编码格式,得到的result竟然含有汉字,这是为什么呢?而且对于此Stream流,此时我无论指定何种编码,最后result都可显示汉字。如果用WebClient就正常了,s1中包含乱码。
WebClient wc = new WebClient();
         byte[] data = wc.DownloadData("http://www.csdn.net");
         String s1 = Encoding.GetEncoding("ISO-8859-1").GetString(data);
为什么呢?

解决方案 »

  1.   

    估计重载成了 StreamReader reader = new StreamReader(receive, Encoding.GetEncoding("iso-8859-1"), true);
    而返回的Stream又带有BOM
      

  2.   

    补充一下:但有一些UTF-8编码的网页,如http://space.sina.com.cn/用上面第一段代码得到的result却显示不出汉字,是乱码。难道这两者的UTF-8还有不同吗???真是有些糊涂了。
      

  3.   

    不是非要搞成乱码
    而是指这时StreamReader对于获得的CSDN页面的流为什么没有按照iso-8859-1来解码,反而出现了汉字?