Кодировка из DOS(CP-886) в utf-8 - C#
Формулировка задачи:
Всем привет. Есть программа которая передает в командную строку команду, и считывает ответ.
Но проблема в том что если ввести в команду ipconfig, то то что в DOS'e будет написано кириллицей, в программе отобразится "кракозябрами". Пробовал разными (по сути одними и теми же) методами перекодировать из CP-886 в UTF-8, но во время выполнения программы выскакивают ошибки.
В первом варианте среда VS2013 ругается на строку Во втором на строку В третьем в общем то тоже самое Проблемы возникают при нажатии на button1.
private void button1_Click(object sender, EventArgs e)
{
string a;
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C " + textBox1.Text;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
a = p.StandardOutput.ReadToEnd();
//Первый вариант
/*var fromEncodind = Encoding.GetEncoding("CP-886");//из какой кодировки
var bytes = fromEncodind.GetBytes(a);
var toEncoding = Encoding.GetEncoding("UTF-8");//в какую кодировку
a = toEncoding.GetString(bytes);*/
//второй вариант
/*Encoding dos = Encoding.GetEncoding("CP886");
Encoding win = Encoding.GetEncoding(a);
byte[] utfArr = dos.GetBytes(a);
byte[] winArr = Encoding.Convert(win, dos, utfArr);
string winLine = win.GetString(winArr);*/
//третий вариант
/*using (var sw = new System.IO.StreamWriter(System.IO.File.Create(@"C:\file.txt"),
System.Text.Encoding.GetEncoding("CP-886")))sw.WriteLine(a);*/
label1.Text = a;
p.WaitForExit();
}var fromEncodind = Encoding.GetEncoding("CP-886");Encoding dos = Encoding.GetEncoding("CP886");var sw = new System.IO.StreamWriter(System.IO.File.Create(@"C:\file.txt"),
System.Text.Encoding.GetEncoding("CP-886"))
Говорит что
Необработанное исключение типа "System.ArgumentException" в mscorlib.dll
Дополнительные сведения: Название кодировки "CP-886" не поддерживается. Сведения об определении пользовательских кодировок см. в документации на метод Encoding.RegisterProvider.
Решение задачи: «Кодировка из DOS(CP-886) в utf-8»
textual
Листинг программы
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);