C# 我的Tcp设备不接受unicode

C# 我的Tcp设备不接受unicode,c#,C#,我有一个字符串,我把这个字符串转换成字节数组来发送tcp设备 byte[] loadRegionCommand=System.Text.Encoding.Unicode.GetBytes("$RGNLOAD http://1.1.1.1:9999/region1.txt"); System.Text.Encoding.Unicode.GetBytes()方法是在每个字符后添加一个零。但是我的设备可能不接受Unicode,我可以用什么来代替System.Text.Encoding.Unico

我有一个字符串,我把这个字符串转换成字节数组来发送tcp设备

  byte[] loadRegionCommand=System.Text.Encoding.Unicode.GetBytes("$RGNLOAD http://1.1.1.1:9999/region1.txt");
System.Text.Encoding.Unicode.GetBytes()
方法是在每个字符后添加一个零。但是我的设备可能不接受Unicode,我可以用什么来代替System.Text.Encoding.Unicode.GetBytes()

谢谢你的帮助和最好的主意

但是
System.Text.Encoding.Unicode.GetBytes()
方法在每个字符后添加一个零

是的,因为Unicode 16位,这正是您所要求的

使用
Encoding.UTF8.GetBytes()
或者甚至可以使用
Encoding.ASCII
。这取决于您的设备的预期

但是
System.Text.Encoding.Unicode.GetBytes()
方法在每个字符后添加一个零

是的,因为Unicode 16位,这正是您所要求的


使用
Encoding.UTF8.GetBytes()
或者甚至可以使用
Encoding.ASCII
。这取决于您的设备的预期

您使用的是
Unicode编码
。unicode字符串的字符大小为两个字节。由于您使用的输入字符仅在ASCII范围内,因此上限字节将始终为零。数据以小端存储,因此首先写入较低的字节。这就是你的结果


您可以根据输入选择不同的编码。如果所有字符都是ASCII码,请使用
ascienceoding
。如果每个字符必须使用一个字节,并且字符超出ASCII范围,请使用相应的代码页。否则,您可以使用
UTF8Encoding
,它将所有ASCII字符编码为一个字节,所有其他字符编码为两个或更多字节(最多四个)。

您使用的是
Unicode编码。unicode字符串的字符大小为两个字节。由于您使用的输入字符仅在ASCII范围内,因此上限字节将始终为零。数据以小端存储,因此首先写入较低的字节。这就是你的结果


您可以根据输入选择不同的编码。如果所有字符都是ASCII码,请使用
ascienceoding
。如果每个字符必须使用一个字节,并且字符超出ASCII范围,请使用相应的代码页。否则您可以使用
UTF8Encoding
,它将所有ASCII字符编码为一个字节,所有其他字符编码为两个或更多字节(最多四个)。

准确地说,
System.Text.Encoding.Unicode
是UTF-16,即每个码点至少16位。谢谢,UTF8解决了我的问题,可能我的设备只接受ascii,准确地说,
System.Text.Encoding.Unicode
是UTF-16,每个代码点至少16位。谢谢,UTF8解决了我的问题,可能我的设备只接受ascii