我有一个要求,我需要读取网络流数据,生成响应并将响应写回流。我正在使用以下代码:
var bufferData = new byte[] { 00, 00, 00, 175 }; //Byte buffer read from stream
var encoding = System.Text.Encoding.UTF8.GetString(bufferData); //Generate response
var responseByte = System.Text.Encoding.UTF8.GetBytes(encoding); //Bytes to write
但是,最后一步生成的字节数组与“ bufferData ”不同。我得到的响应字节为[0, 0, 0, 239, 191, 189]
,与输入数据不同。需要帮助来弄清楚我在做什么。
答案 0 :(得分:4)
字节序列239,191,189是Unicode字符FFFD或替换字符'的UTF-8编码。你得到它,因为输入中的175字节不是使用UTF-8编码的有效字符。 是使用iso-8859-1代码页或其他类似的8位代码页的有效字符。
如果使用iso-8859-1代码页,转换后会得到相同的数据
var bufferData = new byte[] { 00, 00, 00, 175 }; //Byte buffer read from stream
var encoding = Encoding.GetEncoding("iso-8859-1").GetString(bufferData); //Generate response
var responseByte = Encoding.GetEncoding("iso-8859-1").GetBytes(encoding);