я знаю, что я получаю некоторые данные в байтовом формате из последовательного порта (устройства GPS u-blox), которые должны выглядеть следующим образом:
Hex: 0xB5 0x62 0x01 0x21
ISO 8859-1: µ b 1 !
Итак, я читаю строку s из командной строкии напечатайте в текстовом поле, и оно будет выглядеть так:
Tbx: ? b !
Это выглядит нормально, так как текстовое поле не настроено на соблюдение кодировки.
Когда я пытаюсь преобразовать строкуНачиная с байтов (которые должны быть похожи на первую шестнадцатеричную строку), я получаю
Bytes(d): 63 98 1 33
Bytes(h): 0x3F 0x62 0x1 0x21
Как видите, µ-символ неправильно закодирован где-то на моем пути.Вот код:
string s = port.ReadLine();
System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
System.Text.Encoding ascii = port.Encoding;
byte[] bASCII = ascii.GetBytes(s);
byte[] bICO = Encoding.Convert(ascii, iso_8859_1, bASCII);
Где я могу испортить µ?