Загрузка страниц не в UTF-8 в C#

В ходе написания одного кода выяснилось, что WebRequest при загрузке веб-страниц в кодировке отличной от UTF-8 (например windows-1251) возвращает закорючки вместо русских букв.
Стандартным Encoder/Decoder-ом сконвертировать текст в UTF-8 не удалось.
Была даже предпринята попытка перевести на C# PHP-шную функцию для конвертирования cp1251 в UTF-8, но это тоже результата не дало.
Решение оказалось элементарным. Нужно явно передать в конструктор StreamReader-а используемую кодировку:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader DatRead = new StreamReader(response.GetResponseStream(),Encoding.GetEncoding(1251));
string Output = DatRead.ReadToEnd();

Поблагодарить автора

One Response to Загрузка страниц не в UTF-8 в C#

  1. Ну да. Всё получилось. Всем прюветы.

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    using System.IO;

    namespace Test

    {

    public partial class Form1 : Form

    {

    public Form1 ()

    {

    InitializeComponent ();

    System.Net.WebRequest reqGET = System.Net.WebRequest.Create (@"http://site.ru/");

    System.Net.WebResponse resp = reqGET.GetResponse ();

    Stream stream = resp.GetResponseStream ();

    StreamReader sr = new StreamReader (stream, Encoding.GetEncoding (1251));

    string s = sr.ReadToEnd ();

    StreamWriter sw = new StreamWriter («test.txt», false, Encoding.GetEncoding (1251));

    sw.Write (s);

    sw.Close ();

    }

    }

    }

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>