从utf-8字节编码的C#.Net框架字符串

从utf-8字节编码的C#.Net框架字符串,c#,.net,encoding,utf-8,C#,.net,Encoding,Utf 8,我用C#编写了应用程序,该应用程序使用套接字(udp libenet)通过网络从服务器接收数据 在我的应用程序中,我有处理数据包中发送的原始字节的功能。 函数之一是读取由\0分隔的字符串 我的问题是,我正在通过服务器将UTF-8编码的字符串发送到C#应用程序,但当我使用这些字符串在控件中显示它们时,我得到的是胡言乱语而不是波兰语字母 从缓冲区读取字符串的函数: public override string ReadString() { StringBuilder

我用C#编写了应用程序,该应用程序使用套接字(udp libenet)通过网络从服务器接收数据

在我的应用程序中,我有处理数据包中发送的原始字节的功能。 函数之一是读取由\0分隔的字符串

我的问题是,我正在通过服务器将UTF-8编码的字符串发送到C#应用程序,但当我使用这些字符串在控件中显示它们时,我得到的是胡言乱语而不是波兰语字母

从缓冲区读取字符串的函数:

public override string ReadString()
{
            
    StringBuilder sb = new StringBuilder();

    while (true)
    {
        byte b;
        if (Remaining > 0)
            b = ReadByte();
        else
            b = 0;

        if (b == 0) break;

        // Probably here is the problem. Checked other encodings etc., but still same 
        sb.Append(Encoding.UTF8.GetString(new byte[] { b }, 0, 1));
    }

    return sb.ToString();
}
函数重写,来自以下位置的函数重写:

public class BitReader : BinaryReader
在我的应用程序中,我得到:


无法按字节读取UTF-8,因为单个字符可能占用多个字节


请参阅(首先将所有内容读入一字节数组/列表)。

中提供了复制粘贴就绪代码。谢谢,works:)我使用的正确解决方案是:将所有字节放入列表,然后使用Encoding.UTF8.GetString(List.ToArray())将其转换