在线等。。。C# GetBytes() 缺失元素

weichangqing00 2010-07-05 02:01:39
byte[] c = bt;

string s = System.Text.Encoding.Default.GetString(c);

byte[] a = System.Text.Encoding.Default.GetBytes(s);

我的 byte[] c 里面有8700多个元素

但是 byte[] a 里面只有8000多个元素 为什么少了这么多? 这个怎么解决

我的数据库里存的是 string s

取出来要变成byte[] a 但是和原始数据 byte[] c 不符

也就是解决System.Text.Encoding.Default.GetBytes(s) 缺失元素
...全文
482 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
沉了吗?。。。。。
tashiwoweiyi 2010-07-05
  • 打赏
  • 举报
回复
我是来学习的
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
来几个神。。。。
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
帮我顶。。。。。
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 linux7985 的回复:]
也许是有些多余的编码字节被干掉了
[/Quote]

这个是图片 被干掉就不能显示了 - -!
烈火蜓蜻 2010-07-05
  • 打赏
  • 举报
回复
也许是有些多余的编码字节被干掉了
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
问题补充:
com.ExecuteScalar()
我从数据库取出来的就是这个字符串:
:"??JFIF\0\0H\0H\0\0?C\0\a\a\b\n\n\n\t\t\n\f%# , #&')*)-0-(0%()(?C\a\a\a\n\b\n....."

该怎么办

weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gomoku 的回复:]
string s = System.Text.Encoding.Default.GetString(c);
该行导致了缺失。

1、原因在于并不是所有的字节组合都能转换为字符的(取决于当前的编码)。
2、不同机器的Encoding.Default可能不同,用Encoding.Default来做转换对于网络通讯并不安全。

解决方法:用Base64编码(Convert.ToBase64S……
[/Quote]

的确能行 但是我用的是别人的数据库 数据库里面的数据不能改 别人存进去的就是:"??JFIF\0\0H\0H\0\0?C\0\a\a\b\n\n\n\t\t\n\f%# , #&')*)-0-(0%()(?C\a\a\a\n\b\n....."
这个样子的字符串
gomoku 2010-07-05
  • 打赏
  • 举报
回复
string s = System.Text.Encoding.Default.GetString(c);
该行导致了缺失。

1、原因在于并不是所有的字节组合都能转换为字符的(取决于当前的编码)。
2、不同机器的Encoding.Default可能不同,用Encoding.Default来做转换对于网络通讯并不安全。

解决方法:用Base64编码(Convert.ToBase64String)

weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 red_angelx 的回复:]
很显然编码方式不是System.encoding.default..
[/Quote]

我转过去 再转过来 都用default为什么不一样?
Red_angelX 2010-07-05
  • 打赏
  • 举报
回复
很显然编码方式不是System.encoding.default..
weichangqing00 2010-07-05
  • 打赏
  • 举报
回复
二楼说的试过了 是同一个类。
问题补充:
变成字符串 是这个样子的 :"??JFIF\0\0H\0H\0\0?C\0\a\a\b\n\n\n\t\t\n\f%# , #&')*)-0-(0%()(?C\a\a\a\n\b\n....."

原始数据是:c[0] 255、c[1] 216、c[2] 255、c[3] 224、c[4] 0、c[5] 16、c[6] 74、c[7] 70、 c[8] 73、c[9] 70、c[10] 0、......
转换后的数据是:c[0] 255、c[1] 63、c[2] 63、c[3] 16、c[4] 74、c[5] 70、c[6] 73、c[7] 70、 c[8] 0、c[9] 1、c[10] 1、......

有一部分一样


ZSW53362465 2010-07-05
  • 打赏
  • 举报
回复
很显然编码方式不一致
-深白色- 2010-07-05
  • 打赏
  • 举报
回复
呃。。。。。。。。。应该不会,你试试两次的Encoding.Default是不是同一个类,debug下看看

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧