WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();
GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");
所以这段代码回复:“Skaitytojo klausimas psichologui:kaslemiahomoseksualumÄ...? - NaujienųportalasAlfa.lt”而不是“Skaitytojo klausimas psichologui:kaslemiahomoseksualumą? - NaujienųportalasAlfa.lt”。
此网页编码于1257(波罗的海),但textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml;
返回扭曲的文本 - 波罗的海变音符被转换为一些奇怪的几个字符长字符串:(
是的,我已经尝试了HtmlAgilityPack论坛。他们很糟糕。
P.S。我不是程序员,但我从事社区项目,我真的需要让这段代码工作。谢谢;}
答案 0 :(得分:25)
实际上该页面是用UTF-8编码的。
GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);
会奏效。
或者您可以使用SO answer中的代码来检测来自http标头或元标记的编码,并正确地重新编码。 (它还支持gzip以最小化您的下载)。
使用下载类,您的代码将如下所示:
HttpDownloader downloader = new HttpDownloader("http://www.alfa.lt",null,null);
GodLikeHTML.LoadHtml(downloader.GetPage());
答案 1 :(得分:12)
我有类似的编码问题。我通过在我的WebClient初始化中添加以下内容,在最新版本的HtmlAgilityPack中修复它。
var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");
答案 2 :(得分:5)
HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
StreamReader reader = new StreamReader(WebRequest.Create(YourUrl).GetResponse().GetResponseStream(), Encoding.Default); //put your encoding
doc.Load(reader);
希望它有所帮助:)
答案 3 :(得分:4)
UTF8对我来说不起作用,但是在设置了这样的编码之后,我试图抓取的大多数页面只是起作用了:
web.OverrideEncoding = Encoding.GetEncoding(“ISO-8859-1”);
也许这对某人有帮助。
答案 4 :(得分:1)
尝试将其更改为GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt"), Encoding.GetEncoding(1257));
答案 5 :(得分:1)
这似乎消除了我对编码的任何了解:
using System;
using HtmlAgilityPack;
using System.Net;
using System.IO;
class Program
{
static void Main(string[] args)
{
Console.Write("Enter the url to pull html documents from: ");
string url = Console.ReadLine();
HtmlDocument document = new HtmlDocument();
var request = WebRequest.Create(url);
var response = request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
document.LoadHtml(reader.ReadToEnd());
}
}
}
答案 6 :(得分:0)
这是我的解决方案
HttpWebRequest request =(HttpWebRequest)WebRequest.Create("http://www.sina.com.cn");
HttpWebResponse response =(HttpWebResponse)request.GetResponse();
long len = response.ContentLength;
byte[] barr = new byte[len];
response.GetResponseStream().Read(barr, 0, (int)len);
response.Close();
string data = Encoding.UTF8.GetString(barr);
var encod = doc.DetectEncodingHtml(data);
string convstr = Encoding.Unicode.GetString(Encoding.Convert(encod, Encoding.Unicode, barr));
doc.LoadHtml(convstr);
答案 7 :(得分:0)
如果所有这些帖子都不起作用,请使用:WebUtility.HtmlDecode("Your html text");