Может ли .NET WebRequest / WebResponse правильно переводить знаки ударения, диакритические знаки и сущности? - PullRequest
0 голосов
/ 30 апреля 2009

Я "зачищаю" свои собственные страницы как временный взлом, используя WebRequest .NET.

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

Мне интересно, есть ли способ заставить их переводиться правильно, используя множество встроенных свойств и методов .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;
}

Ответы [ 2 ]

2 голосов
/ 30 апреля 2009

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

System.Net.WebClient client = new System.Net.WebClient ();
строка html = client.DownloadString (urlToGet);
string decoded = System.Web.HttpUtility.HtmlDecode (html);

также проверьте клиент. Кодировка

0 голосов
/ 08 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...