2010-08-10 14 views
18
WebClient GodLikeClient = new WebClient(); 
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument(); 

GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt"); 

तो यह कोड रिटर्न "पाठकों के सवालों के मनोवैज्ञानिक: क्या कारण समलैंगिकता ... - Naujienų पोर्टल Alfa.lt?" बजाय "के पाठकों के सवालों का मनोवैज्ञानिक: क्या समलैंगिकता का कारण बनता है - समाचार पोर्टल Alfa.lt? "।सी # और HtmlAgilityPack एन्कोडिंग समस्या

यह वेबपृष्ठ 1257 (बाल्टिक) में एन्कोड किया गया है, लेकिन textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml; रिटर्न विकृत पाठ -। बाल्टिक विशेषक कई लंबे तार :(

और हाँ, मैं HtmlAgilityPack मंच की कोशिश की है कुछ अजीब पात्रों के रूप में तब्दील कर रहे हैं वे चूसना करते

पी एस मैं कोई प्रोग्रामर हूँ, लेकिन मैं एक समुदाय परियोजना पर काम करते हैं और मैं वास्तव में काम कर रहे इस कोड को प्राप्त करने की आवश्यकता धन्यवाद;।।}

उत्तर

21
को बदलने की कोशिश

असल पेज 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()); 
+0

हाँ, कि 'काम बढ़ रही है: डी वाह, काफी सरल है, यह नहीं है। धन्यवाद! – August

+2

बहुत धन्यवाद, जैसे पागल वर्ण या जो कुछ भी करने के लिए मिला है, अब यह काम कर रहा है ठीक –

+0

Dehell GodLikeHTML है? इस एक पर्याय है या वास्तव में मैं यही कारण है कि घर के साथ एक वर्ग के लिए देख रहा हूँ? – helmesjo

1

कि GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt"), Encoding.GetEncoding(1257));

+0

माफ करना, मैं तुम्हें गुमराह किया है - यह UTF में एन्कोड किया गया था। हालांकि आपकी मदद के लिए धन्यवाद। – August

6
HtmlAgilityPack.HtmlDocument doc = new HtmlDocument(); 
StreamReader reader = new StreamReader(WebRequest.Create(YourUrl).GetResponse().GetResponseStream(), Encoding.Default); //put your encoding    
doc.Load(reader); 

आशा है कि यह मदद करता है :)

11

मैं एक इसी तरह की एन्कोडिंग समस्या थी। मैं इसे ठीक किया गया, HtmlAgilityPack के नवीनतम संस्करण में, मेरे WebClient प्रारंभ करने के लिए següents जोड़कर।

web.OverrideEncoding = Encoding.GetEncoding (आईएसओ-8859:

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

सर्वश्रेष्ठ उत्तर (जब आप HTMLAgilityPack का उपयोग करके इसे कर सकते हैं तो वेब क्लाइंट का उपयोग क्यों करें – a1204773

1

UTF8 मेरे लिए काम नहीं किया था, लेकिन एन्कोडिंग के बाद इस तरह की स्थापना, अधिकांश पृष्ठों मैं कोशिश कर रहा था बस परिमार्जन wel काम करने के लिए -1);

शायद यह किसी की मदद कर सकते हैं।

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); 
0

है अगर उन पोस्ट के बिल्कुल काम नहीं करता, बस इस का उपयोग करें: WebUtility.HtmlDecode("Your html text");

संबंधित मुद्दे