因此,我试图对用C#编写的某些软件进行修改,但我并不是真正的开发人员。代码从客户端读取数据并从中获取数据。我看到的问题是,当你使用非英文字符的客户端的值时,它变得乱七八糟。有问题的代码是:从C#中的原始TCP流获取unicode字符串
public static string ReadNT(BinaryReader stream)
{
ret = "";
byte addByte = 0x00;
do {
addByte = ReadByte(stream);
if (addByte != 0x00)
ret += (char)addByte;
} while (addByte != 0x00);
return ret;
}
至于我可以告诉它会通过流,并通过一个转换的东西为一个字符一个得到的字符串。这个问题与unicode/utf8不兼容。有没有办法将其转换为一个字符串与utf8值?
你应该检查出UTF8Encoding类http://msdn.microsoft.com/en-us/library/system.text.utf8encoding(v=vs.110).aspx –
从我的(尽管有限)了解unicode,我认为你不能保证每个角色的大小。因此,像这样一次抓取一个字节将需要很多解决方法。您最好的选择可能是一次读取整个流,然后解码。 – Dan
@Dan对于UTF8,你需要在一个类型中读取它的一个字节,因为它是可变长度的。 –