Кодировки в консольном приложении CP866 - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Принимаю данные с МК через COM порт. Но вместо русского текста получаю ?????? ??? ???? и т.д. МК шлёт данные в кодировке CP866. Пробовал гонять входные данные в разных направлениях: 866->UTF-8; UTF-8->866; 866->1251->UTF-8 Подскажите пожалуйста как с этим бороться =)
Листинг программы
  1. namespace ConsoleApplication1
  2. {
  3. class Program
  4. {
  5. public static void Main()
  6. {
  7. SerialPort mySerialPort = new SerialPort("COM4");
  8. mySerialPort.BaudRate = 1200;
  9. mySerialPort.Parity = Parity.None;
  10. mySerialPort.StopBits = StopBits.One;
  11.  
  12. mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  13. mySerialPort.Open();
  14. Console.WriteLine("Press any key to close application...");
  15. Console.WriteLine();
  16. Console.ReadKey();
  17. mySerialPort.Close();
  18. }
  19. private static void DataReceivedHandler(
  20. object sender,
  21. SerialDataReceivedEventArgs e)
  22. {
  23. SerialPort sp = (SerialPort)sender;
  24. string indata = sp.ReadExisting();
  25.  
  26. Encoding srcEncodingFormat = Encoding.GetEncoding("866");
  27. byte[] originalByteString = srcEncodingFormat.GetBytes(indata);
  28. indata = Encoding.UTF8.GetString(originalByteString);
  29. Console.Write(indata);
  30. }
  31. }
  32. }

Решение задачи: «Кодировки в консольном приложении CP866»

textual
Листинг программы
  1. Console.OutputEncoding = System.Text.Encoding.GetEncoding("CP866");

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы