Требуется программа которая будет текст из 1252 переводить в 1251.
var bytes = Encoding.GetEncoding(1252).GetBytes(textBox1.Text);
textBox2.Text = Encoding.GetEncoding(1251).GetString(bytes);
Отлично справляется. Но хотелось бы без копи паста просто выбирать файл. Делаю по аналогии.
string file_data = System.IO.File.ReadAllText(path);
var bytes = Encoding.GetEncoding(1252).GetBytes(file_data);
string file_data_in_1251 = Encoding.GetEncoding(1251).GetString(bytes);
System.IO.File.WriteAllText(path + "_1251", file_data_in_1251);
И получают на выходе файл с ?????.
Попытка добавить
string file_data = System.IO.File.ReadAllText(path, Encoding.GetEncoding(1252));
И
System.IO.File.WriteAllText(path + "_1251", file_data_in_1251, Encoding.GetEncoding(1251));
Толку не дала. Чяднт?
yte[] allData = File.ReadAllBytes(path);
string file_data_in_1251 = Encoding.GetEncoding(1251).GetString(allData);
System.IO.File.WriteAllText(path + "_1251", file_data_in_1251, Encoding.GetEncoding(1251));
Так часть файлов отрабатывает часть нет :(. При этом не рабочие файлы нормально конвертируются через изначальный вариант.
Последовательности байтов очень сильно отличаются от варианта получения из текста и из файла. Текст:
[0] 32 byte
[1] 60 byte
[2] 32 byte
[3] 116 byte
[4] 97 byte
[5] 103 byte
[6] 32 byte
[7] 107 byte
[8] 32 byte
[9] 61 byte
Файл:
[0] 32 byte
[1] 60 byte
[2] 116 byte
[3] 97 byte
[4] 103 byte
[5] 32 byte
[6] 107 byte
[7] 61 byte
[8] 39 byte
[9] 78 byte
Один из этих вариантов отработает. Вариант 1 читаем побайтово:
byte[] allData = File.ReadAllBytes(path);
string file_data_in_1251 = Encoding.GetEncoding(1251).GetString(allData);
System.IO.File.WriteAllText(path + "_1251", file_data_in_1251, Encoding.GetEncoding(1251));
Вариант 2 читаем построчно суём в массив - объединяем массив в строку - получаем из строки байты - переводим в строку с другой кодировкой.
System.IO.StreamReader file = new System.IO.StreamReader(path);
string line;
string lin2;
int counter = 0;
while ((line = file.ReadLine()) != null)
{
counter++;
}
file.Close();
System.IO.StreamReader file2 = new System.IO.StreamReader(path);
string[] file_by_lines = new string[counter+5];
for(int i =0; i < counter; i++)
{
lin2 = file2.ReadLine();
if (!string.IsNullOrEmpty(lin2))
{
file_by_lines[i] = lin2;
}
}
file2.Close();
string file_by_line = string.Concat(file_by_lines);
var b = Encoding.GetEncoding(1252).GetBytes(file_by_line);
string s = Encoding.GetEncoding(1251).GetString(b);
System.IO.File.WriteAllText(path + "_1251_variant1", s, Encoding.GetEncoding(1251));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Что-то всё работало, а потом поломався! Данными база заполненаВсё работало
Когда выбираю в меню виджет интеграции с картами он выглядит так:
Есть класс производый от Window, который закрывается при помощи методаClose()