加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-phone-7 – 这个字节数组发生了什么?

发布时间:2020-12-13 20:07:26 所属栏目:Windows 来源:网络整理
导读:我有一个字节数组: 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编码读取 // Note I can't change this code,to many component dependent on it.using (StreamReader streamReader = new S
我有一个字节数组:
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编码读取

// 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,writeBuf1.Length);
                    byte[] writeBuf = System.Text.Encoding.BigEndianUnicode.GetBytes(buf1string);
原始字节数组不被编码为UTF-8.因此,StreamReader会用替换字符U FFFD替换每个无效字节.当该字符被编码回UTF-8时,这导致字节序列EF BF BD.您不能从字符串中构造原始字节值,因为信息完全丢失.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读