我知道我收到来自串行端口(一个了u-blox GPS设备)以字节格式的一些数据,也应该是这样的:C#的SerialPort编码转换为byte []
Hex: 0xB5 0x62 0x01 0x21
ISO 8859-1: µ b 1 !
所以我读了在命令行字符串s和一个文本框打印,它看起来像:
Tbx: ? b !
这似乎很好,因为文本框未配置尊重编码。
当我尝试将字符串s转换为字节(这看起来应该像第一个十六进制线),我得到
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);
我在哪里搞μμ?
是没可能使用二进制'读(字节[],INT,INT)'方法,而忘记了编码? –
使用unicode而不是iso-8859-1 – Jaster
@Marc Graell:并不是真的,因为我收到很多其他ASCII消息(NMEA)中的消息,我将其转发给其他设备。所以我会再次担心编码,只是在不同的地方。 (a)Jaster:既不工作也不工作。 – buhlara