чтение неанглийских html-страниц с помощью c # - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь найти строку на иврите на веб-сайте. Код для чтения прилагается.

После этого я пытаюсь прочитать файл с помощью streamReader, но не могу сопоставить строки на других языках. что я должен делать?

   // used on each read operation
    byte[] buf = new byte[8192];

    // prepare the web page we will be asking for
    HttpWebRequest request = (HttpWebRequest)
        WebRequest.Create("http://www.webPage.co.il");

    // execute the request
    HttpWebResponse response = (HttpWebResponse)
        request.GetResponse();

    // we will read data via the response stream
    Stream resStream = response.GetResponseStream();

    string tempString = null;
    int count = 0;
    FileStream fileDump = new FileStream(@"c:\dump.txt", FileMode.Create);
    do
    {
        count = resStream.Read(buf, 0, buf.Length);
        fileDump.Write(buf, 0, buf.Length);

    }
    while (count > 0); // any more data to read?

    fileDump.Close();

Ответы [ 2 ]

0 голосов
/ 09 июня 2010

Решил.

Проблема заключалась в выборе неправильной кодировки, я выбрал utf-8, который не всегда правильный ответ:)

ключевые строки:

Encoding encode = System.Text.Encoding.GetEncoding("windows-1255");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
0 голосов
/ 09 июня 2010

Вам не хватает подходящего кодировщика, взгляните на WebResponse.GetResponseStream Method для подробностей

Обновлено: используйте кодировку иврита (Windows) 1255

Encoding encode = System.Text.Encoding.GetEncoding(1255); // Hebrew (Windows) 

// Pipe the stream to a higher level stream reader with the required encoding format. 
 StreamReader readStream = new StreamReader( resStream , encode );
...