Кодировка из 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д