Windows phone 7 这个字节数组是怎么回事?

Windows phone 7 这个字节数组是怎么回事?,windows-phone-7,c#-4.0,encoding,bytearray,Windows Phone 7,C# 4.0,Encoding,Bytearray,我有一个字节数组: 00 01 00 00 12 81 00 00 01 00 C8 00 00 00 08 5C 9F 4F A5 09 45 D4 CE 它是通过StreamReader使用UTF8编码来读取的 // Note I can't change this code, to many component dependent on it. using (StreamReader streamReader = new StreamReader(responseStream,

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

它是通过
StreamReader
使用
UTF8编码来读取的

// 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);
    }
}
当该函数运行时,我得到以下信息(我转换为字节数组)

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

原始字节数组未编码为UTF-8。因此,
StreamReader
将每个无效字节替换为。当该字符被编码回UTF-8时,将产生字节序列
EF BF BD
。您无法从字符串构造原始字节值,因为信息已完全丢失。

您能告诉我们正在写入/创建数组的代码吗?不,它来自第三方服务,这是服务返回的确切数据。。。此外,我只是想让它回到它应该是什么(因为它在响应流中)我对此感到非常困惑…那么你怎么知道流是以什么编码和字节顺序写入的呢?你能连接一个网络嗅探器(Fiddler)来查看实际传输的是什么吗?这就是我担心的。。。所以,真正不丢失数据的唯一方法是找出编码是什么,然后像那样读取?不幸的是,由于某些原因,我不能只读取字节数组,流需要一个streamreader来读取…是的,当您有疑问时,请使用
ISO-8859-1
,这样您将获得从字节到字符的简单1:1映射。出于好奇:为什么有人想把这样的字节流(显然是非字符数据)作为字符流来读取?难道你不能向流的来源询问一个规范吗?除了这一个新的部分,一切都是(并且已经是)字符数据。因此,我只是添加了一些覆盖来获得实际的字节[](可选),所有这些都与ISO-8859-1编码相匹配。谢谢哇,天哪,所以这些字节是使用错误编码的很好标记!