If your incoming data is in UTF-8 format, then you can just pass the byte array directly to Encoding.UTF8.GetString
to get the string representation of the UTF-8 data.
byte[] b = new byte[2048];
int k = Socket.Receive(b);
string message = Encoding.UTF8.GetString(b, 0, k);