请看代码
tBytes = memoryStream.ToArray();
string strbts = Encoding.GetEncoding("gb2312").GetString(tBytes); byte[] bts = Encoding.GetEncoding("gb2312").GetBytes(strbts);为什么bts和tBytes会不同呢?各位大侠遇到过么?
tBytes = memoryStream.ToArray();
string strbts = Encoding.GetEncoding("gb2312").GetString(tBytes); byte[] bts = Encoding.GetEncoding("gb2312").GetBytes(strbts);为什么bts和tBytes会不同呢?各位大侠遇到过么?
是把tBytes中的数据每两个byte转换成一个Unicode编码字符,当遇到byte组合不存在相应的Unicode编码字符时,就用0x003f代替,ASCII编码字符为'?'。 byte[] bts = Encoding.GetEncoding("gb2312").GetBytes(strbts);
是把Unicode编码字符转换为GB2312汉字编码和ASCII编码的字节序列,对于ASCII编码字符就把高位字节的0x00省略掉,只保留低位字节。如byte数组:{ 1, 2, 233, 4, 129, 6 }
编码成Unicode编码字符为:{0x0001, 0x0002, 0x003f, 0x003f}
再把它转换为byte数组为:{0x01, 0x02, 0x3f, 0x3f}
你的代码不全 看不出tBytes是什么类型,
bts是一个byte类型的两类型类型不同
你可以设一个断点,看看tBytes中的数据对不对