【发布时间】:2010-07-22 02:07:15
【问题描述】:
我正在使用 tcpstream 并将数据复制到内存流中。现在我想将其转换为文本(UTF-8 编码)。我尝试了各种方法并做了flush(),但我想不通。我尝试将它与 StreamReader 结合使用,但没有成功(我得到一个空字符串)。
【问题讨论】:
我正在使用 tcpstream 并将数据复制到内存流中。现在我想将其转换为文本(UTF-8 编码)。我尝试了各种方法并做了flush(),但我想不通。我尝试将它与 StreamReader 结合使用,但没有成功(我得到一个空字符串)。
【问题讨论】:
只需从MemoryStream 获取数据并对其进行解码:
string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());
您可能会得到一个空字符串,因为您正在从MemoryStream 读取而没有重置它的位置。无论当前位置在哪里,ToArray 方法都会获取所有数据。
如果在你放入MemoryStream之前恰好是一个字节数组,你可以直接使用它。
【讨论】:
using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
ms.Position = 0;
Console.WriteLine(reader.ReadToEnd());
}
【讨论】: