.NET 4.x Кракозябры при парсинге страницы - C#

Узнай цену своей работы

Формулировка задачи:

Получаю код страницы. С помощью регулярок извлекаю значение тэга заголовка страницы(<title>). Но в treeView выдаёт пустые строки. Посмотрев, что там не так, я увидел, что вместо русских букв получаются кракозябры. Кодировка получаемой страницы - UTF8. Код прилагается:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _2
{
    public partial class Form1 : Form
    {
        private int a = 7713;
        
        public Form1()
        {
            InitializeComponent();
        }
 
        int number = 1;
 
        private void button1_Click(object sender, EventArgs e)
        {
            while (number <= 4)
            {
                string str = getResponse(@"https://stories.everypony.ru/story/" + number); Encoding.GetEncoding(1251);
                richTextBox1.Text = str;
                str = Regex.Match(str, @">([А-Я][а-я]*.[а-я]*.)([—])").ToString();
                str = Regex.Match(str, @"([А-Я][а-я]*.[а-я]*)").ToString();
 
                treeView1.Nodes.Add(str);
                number = number + 1;
            }
 
        }
        string getResponse(string uri)
        {
            try
            {
                StringBuilder sb = new StringBuilder();
                byte[] buf = new byte[8192];
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
 
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream resStream = response.GetResponseStream();
                int count = 0;
                do
                {
                    count = resStream.Read(buf, 0, buf.Length);
                    if (count != 0)
                    {
                        sb.Append(Encoding.Default.GetString(buf, 0, count));
                    }
                }
                while (count > 0);
                return sb.ToString();
            }
            catch (WebException ex)
            {
                HttpWebResponse webResponse = (HttpWebResponse)ex.Response;
                if (webResponse.StatusCode == HttpStatusCode.NotFound)
                {
                    return "404";
                }
                else
                {
                    throw;
                }
            }
        }
    }
}
Сам пытался исправить, но ничего не получается. Помогите, пожалуйста.

Решение задачи: «.NET 4.x Кракозябры при парсинге страницы»

textual
Листинг программы
string getResponse(string uri)
{
    WebClient client = new WebClient();
    return client.DownloadString(uri);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы