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

Категория: C# Комментариев: 1

В ходе написания одного кода выяснилось, что 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();
Автор: Кто-то   @   10 июня 2010 Комментариев: 1
Метки : , ,

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

Webmoney Z163628999150, R617151845974

Комментариев: 1

Комментарии
Окт 20, 2010
15:25
#1 AlexMoscow :

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

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 ();

}

}

}

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

Предыдущая запись
«
Следующая запись
»