将字节缓冲区转换为UTF8字符串

时间:2013-12-05 16:41:09

标签: c# sockets utf-8 character-encoding bytebuffer

使用此函数,我将接收的字节转换为unicode字符串:

//MESSAGE READER
String message = null;
byte[] b = new byte[2048];
int k = Socket.Receive(b);
char c = ' ';
for (int i = 0; i < k - 1; i++)
{
    c = Convert.ToChar(b[i]);
    message += c.ToString();
}

如何将其转换为UTF-8字符串而不是unicode?

修改
Convert.ToChar - 将指定的8位无符号整数的值转换为其等效的Unicode字符。
是否有某些函数可以转换为等效的UTF-8字符?

2 个答案:

答案 0 :(得分:4)

Encoding.UTF8.GetString(Encoding.Unicode.GetBytes(message));

答案 1 :(得分:1)

如果您的传入数据是UTF-8格式,那么您可以直接将字节数组传递给Encoding.UTF8.GetString以获取UTF-8数据的字符串表示。

byte[] b = new byte[2048];
int k = Socket.Receive(b);    
string message = Encoding.UTF8.GetString(b, 0, k);