这个字节数组怎么回事?

Joh*_*ohn 12 encoding bytearray windows-phone-7 c#-4.0

我有一个字节数组: 00 01 00 00 00 12 81 00 00 01 00 C8 00 00 00 00 00 08 5C 9F 4F A5 09 45 D4 CE

它通过StreamReader使用阅读UTF8 encoding

// Note I can't change this code, to many component dependent on it.
using (StreamReader streamReader = 
    new StreamReader(responseStream, Encoding.UTF8, false))
{
    string streamData = streamReader.ReadToEnd();
    if (requestData.Callback != null)
    {
        requestData.Callback(response, streamData);
    }
}
Run Code Online (Sandbox Code Playgroud)

当该函数运行时,我得到以下内容返回给我(我转换为字节数组)

00 01 00 00 00 12 EF BF BD 00 00 01 00 EF BF BD 00 00 00 00 00 08 5C EF BF BD 4F EF BF BD 09 45 EF BF BD

不知怎的,我需要把什么回到我身边并将其恢复到正确的编码和正确的字节数组,但我已经尝试了很多.

请注意,我正在使用WP7有限的API.

希望你们能提供帮助.

谢谢!

更新帮助......

如果我执行以下代码,它几乎是正确的,只有错误的是第5个到最后一个字节被拆分.

byte[] writeBuf1 = System.Text.Encoding.UTF8.GetBytes(data);
                    string buf1string = System.Text.Encoding.BigEndianUnicode.GetString(writeBuf1, 0, writeBuf1.Length);
                    byte[] writeBuf = System.Text.Encoding.BigEndianUnicode.GetBytes(buf1string);
Run Code Online (Sandbox Code Playgroud)

Rol*_*lig 26

原始字节数组编码为UTF-8.因此,StreamReader用替换字符U + FFFD替换每个无效字节.当该字符被编码回UTF-8时,这将导致字节序列EF BF BD.您无法从字符串构造原始字节值,因为信息完全丢失.