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;
}
上述代码是我从网上拷下来的,有的网页没有问题,可是有的网页中文就出问题了。。
请问该如何修改上述代码或者是有更好的实现方法啊?
估计要改是在这一段上面改的.
{
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的能力不至于一定要全对才行啦,嘿嘿
{
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;
}
s = System.Text.Encoding.Default.GetString((byte[])_xmlhttp.responseBody);改成
s = System.Text.Encoding.Default.GetEncoding("gb2312").GetString((byte[])_xmlhttp.responseBody);
不行的,目前的情况不是全部都不行,这是因为服务器上的编码和他的本地的编码不一样导致的,如果服务器上是utf8,你这样也一样的会出乱码,必须从返回的结果拿编码类型。