Сменить кодировку строки

VLK

вот есть код кнопки:
private void button1_Click(object sender, EventArgs e)
{
var wc = new WebClient();
 
string file = Encoding.UTF8.GetString(wc.DownloadData(textBox1.Text));
 
int find = file.IndexOf("charset=Windows-1251", StringComparison.OrdinalIgnoreCase);
 
if (find > 0) { richTextBox1.Text = /* что тут писать */ ; }
else { richTextBox1.Text = file; }
}
textBox1.Text - это адрес сайта, в результат скачивается страница сайта переводится в строку file в кодировке UTF8, но иногда попадаются страницы с кодировками Windows-1251, в if else я проверяю есть ли в строке указание на то, что кодировка Windows-1251 и если есть, мне надо перевести строку file в кодировку Windows-1251 (это Default), что мне надо конкретно написать что бы перевести в одну строкуЕще раз для понимания, сне надо string в кодировке UTF-8 перевести в string Windows-1251
3 ответа

VLK

    class Program
    {
        static void Main(string[] args)
        {
            string utfLine = "";
 
            Encoding utf = Encoding.UTF8;
            Encoding win = Encoding.GetEncoding(1251);
 
            byte[] utfArr = utf.GetBytes(utfLine);
            byte[] winArr = Encoding.Convert(win, utf, utfArr);
 
            string winLine = win.GetString(winArr);
 
            Console.ReadKey();
        }
    }


VLK

А без перегона в массив byte это невозможно?Так что насчет смены кодировки без массива byte


VLK

Если бы вы дальше записывали эту строку в файл, то можно было бы сразу указать кодировку при записи:
File.WriteAllText(path, file, Encoding.GetEncoding(1251));
А так, да - перегонять в массив байтов