C#如何读取Unicode?

7

我通过网络收到了一个Unicode消息,它看起来像这样:

74 00 65 00 73 00 74 00 3F 00

我正在使用BinaryReader从套接字读取流,但问题是它没有提供“ReadWideString”函数或类似的函数。有人有处理这个问题的想法吗?

谢谢!

3个回答

16

简单!

string str = System.Text.Encoding.Unicode.GetString(array);

其中array是您的字节数组。


8

C#中的字符串默认为Unicode编码。尝试:

string converted = Encoding.Unicode.GetString(data);

如果你的数据是以大端字节序存储的,你可以尝试使用 byte[] 数组来包含 Unicode 数据。

string converted = Encoding.BigEndianUnicode.GetString(data);

每两个字节等于0,它不太可能是utf-8。 - Marcin Deptuła

5
您可以像这样使用StreamReader
StreamReader sr = new StreamReader(stream, Encoding.Unicode);

如果您的流只包含文本行,则使用StreamReaderBinaryReader更合适。如果您的字符串嵌入在二进制数据中,则最好使用Encoding.GetString方法对字符串进行解码,正如其他人所建议的那样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接