public string GetRemoteHtmlCode(string Url)
        {
            string s = "";
            try
            {
                MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
                _xmlhttp.open("GET", Url, false, null, null);
                _xmlhttp.send("");
                if (_xmlhttp.readyState == 4)
                {
                    s = System.Text.Encoding.Default.GetString((byte[])_xmlhttp.responseBody);
                }
            }
            catch (Exception ex)
            {
                s = ex.Message + "指定的地址不存在或地址错误";
            }
            return s;
        }
上述代码是我从网上拷下来的,有的网页没有问题,可是有的网页中文就出问题了。。
请问该如何修改上述代码或者是有更好的实现方法啊?

解决方案 »

  1.   

    编码格式问题,考虑用 Encoding.Unicode或直接用GB2312格式。
      

  2.   

    s = System.Text.Encoding.Default.GetString((byte[])_xmlhttp.responseBody);
    估计要改是在这一段上面改的.
      

  3.   

    public string GetRemoteHtmlCode(string Url)
            {
                string s = "";
                try
                {
                    MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
                    _xmlhttp.open("GET", Url, false, null, null);
                    _xmlhttp.send("");
                    if (_xmlhttp.readyState == 4)
                    {
                        string encoding = _xmlhttp.getResponseHeader("Content-Encoding");
    if(string.IsNullOrEmpty(encoding))
    {
                        s = System.Text.Encoding.UTF8.GetString((byte[])_xmlhttp.responseBody);
    }
    else
    {
    s = System.Text.GetEncoding(encoding).GetString((byte[])_xmlhttp.responseBody);
    }
                    }
                }
                catch (Exception ex)
                {
                    s = ex.Message + "指定的地址不存在或地址错误";
                }
                return s;
            }
    大致是这个意思,可能会有些错误,但我相信lz的能力不至于一定要全对才行啦,嘿嘿
      

  4.   

    public string GetRemoteHtmlCode(string Url) 
            { 
                string s = ""; 
                try 
                { 
                    MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass(); 
                    _xmlhttp.open("GET", Url, false, null, null); 
                    _xmlhttp.send(""); 
                    if (_xmlhttp.readyState == 4) 
                    { 
                        string encoding = _xmlhttp.getResponseHeader("Content-Encoding"); 
    if(string.IsNullOrEmpty(encoding)) 

                        s = System.Text.Encoding.UTF8.GetString((byte[])_xmlhttp.responseBody); 

    else 

    s = System.Text.Encoding.GetEncoding(encoding).GetString((byte[])_xmlhttp.responseBody); 

                    } 
                } 
                catch (Exception ex) 
                { 
                    s = ex.Message + "指定的地址不存在或地址错误"; 
                } 
                return s; 
            } 
      

  5.   

    改一句话
    s = System.Text.Encoding.Default.GetString((byte[])_xmlhttp.responseBody);改成
    s = System.Text.Encoding.Default.GetEncoding("gb2312").GetString((byte[])_xmlhttp.responseBody);
      

  6.   


    不行的,目前的情况不是全部都不行,这是因为服务器上的编码和他的本地的编码不一样导致的,如果服务器上是utf8,你这样也一样的会出乱码,必须从返回的结果拿编码类型。