В ходе написания одного кода выяснилось, что 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();
15:25
Ну да. Всё получилось. Всем прюветы.
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 ();
}
}
}