2009-04-29 2 views
0

Я «скрипичу» своими собственными страницами как временный хак, используя .NET WebRequest.Может ли .NET WebRequest/WebResponse правильно перевести знаки акцента, диакритические знаки и сущности?

Это хорошо работает, но акцентированные символы и диакритические символы не переводятся правильно.

Мне интересно, есть ли способ сделать их правильно переведенными с использованием многих встроенных свойств и методов .NET.

Вот код, я использую, чтобы захватить страницы:

private string getArticle(string urlToGet) 
{ 

    StreamReader oSR = null; 

    //Here's the work horse of what we're doing, the WebRequest object 
    //fetches the URL 
    WebRequest objRequest = WebRequest.Create(urlToGet); 

    //The WebResponse object gets the Request's response (the HTML) 
    WebResponse objResponse = objRequest.GetResponse(); 

    //Now dump the contents of our HTML in the Response object to a 
    //Stream reader 
    oSR = new StreamReader(objResponse.GetResponseStream()); 


    //And dump the StreamReader into a string... 
    string strContent = oSR.ReadToEnd(); 

    //Here we set up our Regular expression to snatch what's between the 
    //BEGIN and END 
    Regex regex = new Regex("<!-- content_starts_here //-->((.|\n)*?)<!-- content_ends_here //-->", 
     RegexOptions.IgnoreCase); 

    //Here we apply our regular expression to our string using the 
    //Match object. 
    Match oM = regex.Match(strContent); 

    //Bam! We return the value from our Match, and we're in business. 
    return oM.Value; 
} 
+1

Прошу прощения за комментарий к чему-то совершенно не связанному с вопросом, но вы используете слишком много комментариев. Шутки в сторону. – Chris

+0

Я собирался написать это :) –

+0

LOL. Это было извлечено из двух разных учебных сайтов еще в тот же день, со всеми комментариями. Я всегда чувствую себя как-то «грязным», принимая чьи-то жесткие письменные комментарии из кода, который не мой. Я, наверное, должен справиться с этим ... – kendor

ответ

2

попробовать использовать:

System.Net.WebClient клиента = новый System.Net.WebClient();
string html = client.DownloadString (urlToGet);
string decoded = System.Web.HttpUtility.HtmlDecode (html);

также проверить client.Encoding

0

Там еще один способ справиться с этим, используя в качестве второго параметра конструктору StreamReader, как это:

new StreamReader(webRequest.GetResponse().GetResponseStream(), 
       Encoding.GetEncoding("ISO-8859-1")); 

Это сделало бы его.

Смежные вопросы