抓取html 中文乱码,真正解决HtmlAgilityPack抓取网页 中文乱码问题

打开HtmlAgilityPack.1.4.0.Source工程

找到HtmlWeb.cs文件打开修改下面方法中的一小段代码:

private HttpStatusCode Get(Uri uri, string method, string path, HtmlDocument doc, IWebProxy proxy,

ICredentials creds)函数中的下方的代码

Encoding respenc = !string.IsNullOrEmpty(resp.ContentEncoding)

? Encoding.GetEncoding(resp.ContentEncoding)

: null;

/*修改成下面的即可*/

/*王..修改 中文乱码问题*/

//Encoding respenc = !string.IsNullOrEmpty(resp.ContentEncoding)

// ? Encoding.GetEncoding(resp.ContentEncoding)

// : null;

System.Text.Encoding respenc;

if ((resp.ContentEncoding != null) && (resp.ContentEncoding.Length > 0))

{

respenc = System.Text.Encoding.GetEncoding(resp.ContentEncoding);

}

else if ((resp.CharacterSet != null) && (resp.CharacterSet.Length > 0))//根据Content-Type中获取的charset

{

if (string.Compare(resp.CharacterSet, "ISO-8859-1", true, System.Globalization.CultureInfo.InvariantCulture) == 0)

respenc = System.Text.Encoding.GetEncoding("GB2312");

else

respenc = System.Text.Encoding.GetEncoding(resp.CharacterSet);

}

else

{

respenc = System.Text.Encoding.GetEncoding("GB2312");

}

修改后之后,重新编译一下,再使用dll,就不会中文乱码了...

可下载自己修改过的文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值