Подскажите код перекодировки

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Мне надо перекодировать утф8 в вин1251 нашел код который у меня работает, но правда со списками
Код:
var list = project.Lists["Список 3"];
var path = project.Variables["FilePath"].Value;
var sb = new StringBuilder();
foreach (string data in list)
    sb.AppendLine(data);
System.Text.Encoding ANSI = Encoding.GetEncoding(1251);
System.Text.Encoding UTF8 = Encoding.UTF8;
byte[] utf8_bytes,ansi_bytes;
utf8_bytes = UTF8.GetBytes(sb.ToString());
ansi_bytes = Encoding.Convert(UTF8, ANSI, utf8_bytes);
using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Create))
{
    using (var writer = new System.IO.BinaryWriter(stream, System.Text.Encoding.ASCII))
    {
        writer.Write(ANSI.GetPreamble());
        writer.Write(ansi_bytes);
    }
}
Приведите пример этого же кода, но только чтоб он брал исходные данные не со списка, а с переменной
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Перекодировка данных производится при взятии их из файла.
У вас данные откуда? Как они в переменную попадают?
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
Я так понял, что надо записать значение переменной в отдельный файл, в кодировке ansi.
Если да, то как-то так:
C#:
var utf8str = project.Variables["utf8str"].Value;
var path = project.Variables["FilePath"].Value;
  
  
System.Text.Encoding ANSI = Encoding.GetEncoding(1251);
System.Text.Encoding UTF8 = Encoding.UTF8;
byte[] utf8_bytes,ansi_bytes;
utf8_bytes = UTF8.GetBytes(utf8str);
ansi_bytes = Encoding.Convert(UTF8, ANSI, utf8_bytes);


using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Create))
{
    using (var writer = new System.IO.BinaryWriter(stream, System.Text.Encoding.ASCII))
    {
        writer.Write(ANSI.GetPreamble());
        writer.Write(ansi_bytes);
    }
}
 
  • Спасибо
Реакции: Dan, AZANIR и sidor800

sidor800

Client
Регистрация
16.04.2013
Сообщения
123
Благодарностей
41
Баллы
28
Adigen спасибо то что надо
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Код:
var utf8str = project.Variables["result"].Value;
var path = project.Variables["FilePath"].Value;
System.Text.Encoding ANSI = Encoding.GetEncoding(1251);
System.Text.Encoding UTF8 = Encoding.UTF8;
byte[] utf8_bytes,ansi_bytes;
utf8_bytes = UTF8.GetBytes(utf8str);
ansi_bytes = Encoding.Convert(UTF8, ANSI, utf8_bytes);
using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Append))
{
    using (var writer = new System.IO.BinaryWriter(stream, System.Text.Encoding.ASCII))
    {
        writer.Write(ANSI.GetPreamble());
        writer.Write(ansi_bytes);
    }
}
В случае чего, если нужно дописывать файл (а не переписывать).
 
  • Спасибо
Реакции: Dan, Санёк и AZANIR

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)