C#和HtmlAgilityPack編碼問題

c# encoding html-agility-pack

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:kaslemiaomomoseksualumÄ...? - NaujienųportalasAlfa.lt“。

這個網頁編碼在1257(波羅的海),但textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml;返回扭曲的文本 - 波羅的海變音符被轉換成一些奇怪的幾個字符長字符串:(

是的,我已經嘗試過HtmlAgilityPack論壇了。他們很糟糕。

PS我不是程序員,但我在社區項目上工作,我真的需要讓這段代碼工作。謝謝 ;}

一般承認的答案

實際上頁面是用UTF-8編碼的。

GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);

將工作。

或者您可以使用我的SO答案中的代碼來檢測來自http標頭或元標記的編碼,並正確地重新編碼。 (它還支持gzip以最小化您的下載)。

使用下載類,您的代碼將如下所示:

GodLikeHTML.Load(GodLikeClient.OpenRead("http://www.alfa.lt"), Encoding.UTF8);

熱門答案

我有類似的編碼問題。我通過在我的WebClient初始化中添加以下內容,在最新版本的HtmlAgilityPack中修復它。

var htmlWeb = new HtmlWeb();
htmlWeb.OverrideEncoding = Encoding.UTF8;
var doc = htmlWeb.Load("www.alfa.lt");



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因