Кодировки в консольном приложении 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");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы