问题描述
为什么把base64编码的字符串解析后,出现二进制流182不包含有效的BinaryHeader?source="tKu13bj41eLQqcrVvP7Iy7vyzajRttfpwdCx7bXE08q8/rG70dOz2ToNCg0KaG0wNjI4MjAwM0B5";//base64编码byte[]bt=System.Text.Encoding.Default.GetBytes(source);bt=Convert.FromBase64String(source);MemoryStreamms=newMemoryStream(System.Text.Encoding.Default.GetBytes(source));ms=newMemoryStream(Convert.FromBase64String(source));ms.Seek(0,SeekOrigin.Begin);returnm_Formater.Deserialize(ms);
解决方案
解决方案二:
同有出错啊,在哪条语句上啊。
解决方案三:
帮顶没碰到过
解决方案四:
returnm_Formater.Deserialize(ms);出现二进制流182不包含有效的BinaryHeader,
解决方案五:
SubSectionobj=newSubSection();//序列化MemoryStreamms=newMemoryStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(ms,obj);byte[]bs=newbyte[ms.Length];ms.Read(bs,0,(int)ms.Length);//byte[]bs=ms.GetBuffer();ms.Seek(0,SeekOrigin.Begin);//反序列化IFormatterformatter2=newBinaryFormatter();MemoryStreamms2=newMemoryStream();ms2.Write(bs,0,bs.Length);ms2.Seek(0,SeekOrigin.Begin);SubSectionobj2=(SubSection)formatter2.Deserialize(ms2);this.Response.Write(obj2.SubName);注意byte[]bs=newbyte[ms.Length];ms.Read(bs,0,(int)ms.Length);,使用标红那两句读取数据,在反序列化的时候就会出错但是使用标绿的那一句读取数据,在反序列化时就正常
解决方案六:
飘过
解决方案七:
"tKu13bj41eLQqcrVvP7Iy7vyzajRttfpwdCx7bXE08q8/rG70dOz2ToNCg0KaG0wNjI4MjAwM0B5"这个base64是怎么来的?
解决方案八:
如果你要转换为"传递给这些收件人或通讯组列表的邮件被延迟:hm06282003@y"stringsource="tKu13bj41eLQqcrVvP7Iy7vyzajRttfpwdCx7bXE08q8/rG70dOz2ToNCg0KaG0wNjI4MjAwM0B5";//base64编码byte[]bt=Convert.FromBase64String(source);string_Text=System.Text.Encoding.GetEncoding("GB2312").GetString(bt);
解决方案九:
http://hi.baidu.com/igoogledyou/blog/item/59ebf3de25a8995794ee3781.html
解决方案十:
引用7楼zgke的回复:
如果你要转换为"传递给这些收件人或通讯组列表的邮件被延迟:hm06282003@y"stringsource="tKu13bj41eLQqcrVvP7Iy7vyzajRttfpwdCx7bXE08q8/rG70dOz2ToNCg0KaG0wNjI4MjAwM0B5";//base64编码 byte[]bt=Convert.FromBase64String(source); string_Text=System.Text.Encoding.GetEncoding("GB2312").GetString(bt);
用这种方法试过了有时候会出现乱码
解决方案十一:
学习
解决方案十二:
引用4楼的回复:
SubSectionobj=newSubSection();//序列化MemoryStreamms=newMemoryStream();IFormatterformatter=newBinaryFormatter();formatter.Serialize(ms,obj);byte[]bs=newbyte[ms.Length];ms.Rea……
为什么两种方法中一种会出错,另一种不会?