byte[] 转字符串的问题

gjwj1 2014-08-07 11:46:22
虫数据库读取image类型的字段放到BYTE[]里,然后转换成字符串System.Text.Encoding.Defatult.GetString(bytes),把这个字符串传递给一个外部的DLL的方法,如果成功返回TRUE,否则FALSE。不管我用什么编码,都不能成功,而在PB9里,读取了这个image字段后(这个字段也是别人的程序写入的)用string(bytes)在调用同样的外部DLL把这个字符串传递进去就能返回true.
现在比较疑惑pb9里的string(bytes)和fromansi(bytes)都能成功,他们对应的.net中的是什么编码啊,对比下来.net中最接近的是System.Text.Encoding.GetEncoding(“GB2312”).GetString(bytes)这个编码,在显示内容上基本一致,但是生成的字符串长度和PB里同样的字符串长度不一致。并且System.Text.Encoding.GetEncoding(“GB2312”).GetBytes(strs)反回去以后对比原始的数据库里的image里的字段内容也不一致,由于写入的这个字段程序已经问不到他是用什么编码(内码)转换写入的,只能自己猜,但.net中大多的codepage都试过了,不行。有高手能帮我解答下吗?谢谢了。
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2014-08-08
  • 打赏
  • 举报
回复
fromansi从字面上理解是本地编码,简体中文系统一般都是GB2312,如果不一致就奇葩了,估计得自己实现转码。
於黾 2014-08-08
  • 打赏
  • 举报
回复
Encoding->其实想说unicode,随手复制错了
於黾 2014-08-08
  • 打赏
  • 举报
回复
引用 2 楼 wangyue4 的回复:
图片的话用base64编码
+1 不管是Encoding还是UTF-8还是GB2312,都是文字编码,里面很多编码是空的,没有对应任何字符 你把二进制流按文字编码转换,当然就会出现乱码(空字符会被替换成类似?这样的东西)
wangyue4 2014-08-08
  • 打赏
  • 举报
回复
图片的话用base64编码
sunny906 2014-08-08
  • 打赏
  • 举报
回复
试试BitConverter.ToString

110,539

社区成员

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

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

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