Кодировки в консольном приложении CP866 - C#
Формулировка задачи:
Добрый день.
Принимаю данные с МК через COM порт. Но вместо русского текста получаю ?????? ??? ???? и т.д.
МК шлёт данные в кодировке CP866.
Пробовал гонять входные данные в разных направлениях: 866->UTF-8; UTF-8->866; 866->1251->UTF-8
Подскажите пожалуйста как с этим бороться =)
namespace ConsoleApplication1 { class Program { public static void Main() { SerialPort mySerialPort = new SerialPort("COM4"); mySerialPort.BaudRate = 1200; mySerialPort.Parity = Parity.None; mySerialPort.StopBits = StopBits.One; mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); mySerialPort.Open(); Console.WriteLine("Press any key to close application..."); Console.WriteLine(); Console.ReadKey(); mySerialPort.Close(); } private static void DataReceivedHandler( object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Encoding srcEncodingFormat = Encoding.GetEncoding("866"); byte[] originalByteString = srcEncodingFormat.GetBytes(indata); indata = Encoding.UTF8.GetString(originalByteString); Console.Write(indata); } } }
Решение задачи: «Кодировки в консольном приложении CP866»
textual
Листинг программы
Console.OutputEncoding = System.Text.Encoding.GetEncoding("CP866");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д