我有以下代码,从旧的VB6程序转换为C#。 VB6使用了旧的Winsock,它可以接受一个String参数,但是C#程序使用System.Net.Socket which
想要一个byte
数组。Encoding.UTF8.GetBytes似乎插入一个虚假的字节
byte[] msg = Encoding.UTF8.GetBytes(tempString);
_TCPConn.Send(msg);
tempString
有
0x0002 (' ')
0x0000 ('\0')
0x0000 ('\0')
0x0000 ('\0')
0x0080 (' ')
0x006d ('m')
0x0068 ('h')
但msg
得到一个额外的字节
0x02
0x00
0x00
0x00
**0xc2**
0x80
0x6d
0x68
凡说, “C2” 是从哪里来的?
接收器期待什么? ANSI字符串或Unicode字符串? –
VB6允许在字符串中存储字节,但那些日子已经结束。特别是Unicode规范化可以在您甚至将其转换回字节之前随机销毁内容。你需要在核心解决这个问题并停止使用字符串。 –