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

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

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

Получаю код страницы. С помощью регулярок извлекаю значение тэга заголовка страницы(<title>). Но в treeView выдаёт пустые строки. Посмотрев, что там не так, я увидел, что вместо русских букв получаются кракозябры. Кодировка получаемой страницы - UTF8. Код прилагается:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Text;
  10. using System.Text.RegularExpressions;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. namespace _2
  14. {
  15. public partial class Form1 : Form
  16. {
  17. private int a = 7713;
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22. int number = 1;
  23. private void button1_Click(object sender, EventArgs e)
  24. {
  25. while (number <= 4)
  26. {
  27. string str = getResponse(@"https://stories.everypony.ru/story/" + number); Encoding.GetEncoding(1251);
  28. richTextBox1.Text = str;
  29. str = Regex.Match(str, @">([А-Я][а-я]*.[а-я]*.)([—])").ToString();
  30. str = Regex.Match(str, @"([А-Я][а-я]*.[а-я]*)").ToString();
  31. treeView1.Nodes.Add(str);
  32. number = number + 1;
  33. }
  34. }
  35. string getResponse(string uri)
  36. {
  37. try
  38. {
  39. StringBuilder sb = new StringBuilder();
  40. byte[] buf = new byte[8192];
  41. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
  42. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  43. Stream resStream = response.GetResponseStream();
  44. int count = 0;
  45. do
  46. {
  47. count = resStream.Read(buf, 0, buf.Length);
  48. if (count != 0)
  49. {
  50. sb.Append(Encoding.Default.GetString(buf, 0, count));
  51. }
  52. }
  53. while (count > 0);
  54. return sb.ToString();
  55. }
  56. catch (WebException ex)
  57. {
  58. HttpWebResponse webResponse = (HttpWebResponse)ex.Response;
  59. if (webResponse.StatusCode == HttpStatusCode.NotFound)
  60. {
  61. return "404";
  62. }
  63. else
  64. {
  65. throw;
  66. }
  67. }
  68. }
  69. }
  70. }
Сам пытался исправить, но ничего не получается. Помогите, пожалуйста.

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

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

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


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

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

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы