byte []到UTF8编码无法正常工作

时间:2018-02-12 10:01:09

标签: c# utf-8

我有一个要求,我需要读取网络流数据,生成响应并将响应写回流。我正在使用以下代码:

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],与输入数据不同。需要帮助来弄清楚我在做什么。

1 个答案:

答案 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);