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