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