CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何将string转换成byte类型而不丢失数据?

楼主zjlijunmin(hiahia)2005-12-30 11:04:49 在 .NET技术 / C# 提问

我从sybase中读取string格式的数据,再将其转成byte再换编码,大部分汉字都能正常显示了,但是有部分还是不正常,特别是词组或句子的最后一个字,还有一些特殊字符好像也不对。编码转换的代码如下:  
                                                              string   s;  
  Byte[]   encodedBytes   =   Encoding.Default.GetBytes(s);  
  return   System.Text.Encoding.UTF8.GetString(encodedBytes);  
   
  同事发现是转byte的过程中会丢失一些信息造成这种情况,有没有办法解决这个问题(即不丢失数据的转换)?  
  或者直接用byte的形式从sybase数据库读取数据有没有可能实现?  
  谢谢回复!  
  问题点数:50、回复次数:12Top

1 楼hdt(倦怠)回复于 2005-12-30 11:42:36 得分 5

编码与解码方式不一样Top

2 楼c11_11_11(走猪观花)回复于 2005-12-30 12:23:30 得分 0

怎么可能呢Top

3 楼jiezhi(风满袖)回复于 2005-12-30 13:03:28 得分 10

如果存入的和取出的内容采取的字符编码不同,当然会出现问题了。  
  你先搞清楚数据库的内容是使用什么字符编码的。Top

4 楼hyj_828(水梦)回复于 2005-12-30 13:14:11 得分 0

楼上正解Top

5 楼pupo(泡泡)回复于 2005-12-30 13:20:15 得分 20

Byte[]   encodedBytes   =   Encoding.Default.GetBytes(s);  
  return   System.Text.Encoding.UTF8.GetString(encodedBytes);  
   
  用Default转字节,用UTF8还原当然会出现问题,统一用一种编码Top

6 楼zjlijunmin(hiahia)回复于 2005-12-30 13:45:53 得分 0

谢谢大家的回复,我现在数据库中数据的编码是utf8,我直接读出来的时候显示的是乱码,如:  
   
  “绌轰腑杈冮噺   ;   20涓栫邯鍏稿瀷绌烘垬绾疄   ;   ”  
   
  我用上述函数转换了之后就变成:  
   
  “空中较量   ;   20世纪典型空战纪实   ;   ”  
   
  最后几个字符肯定不对的,大家帮忙想想办法吧,如何才能正确解码这段字符串呢?十分感谢Top

7 楼zjlijunmin(hiahia)回复于 2005-12-30 15:37:38 得分 0

继续请教,这几天就为这个问题发愁,解决不了下面都没法做,555。Top

8 楼zjlijunmin(hiahia)回复于 2005-12-31 09:04:28 得分 0

最后一次顶了,继续请教,分不够开贴再加,谢谢回复!Top

9 楼lidong6(立冬)回复于 2005-12-31 09:26:02 得分 8

关键是统一编码和解码方式,使用的编码解码类要一样  
  建议都使用:System.Text.Encoding.Default   使用其他类时可能会出现乱码.Top

10 楼zjlijunmin(hiahia)回复于 2005-12-31 10:39:36 得分 0

奇怪的就是为什么存在sybase数据库里的utf8编码到本机上就成乱码了,转成byte再转回到utf8又能认出来了,但最后几个字符总不正常,谢谢回复,继续求教;Top

11 楼holym(小雨)回复于 2005-12-31 15:21:37 得分 7

用这个看看   System.Text.Encoding.GetEncoding("utf8").GetBytes(s);Top

12 楼zjlijunmin(hiahia)回复于 2005-12-31 16:51:25 得分 0

holym(小雨)您好;  
  按照您的方法编译出错,具体信息为:  
  未处理的“System.ArgumentException”类型的异常出现在mscorlib.dll中。  
  其他信息:   utf8   不是受支持的编码名。  
   
  这是什么原因?谢谢回复。Top

相关问题

  • string转换成byte???
  • String怎么转换为byte[]?
  • byte如何转换成String?
  • BYTE数组和String转换
  • warning C4244: “=” : 从“DWORD”转换到“BYTE”,可能丢失数据
  • string和widestring转换丢失数据的问题
  • 如何将String 转换为byte[] ?!
  • string和byte数组的相互转换~~
  • 怎么实现byte[] 和 string 的转换?
  • string如何转换为byte数组?

关键词

  • 编码
  • sybase
  • 字符
  • 转换
  • 数据
  • 数据库
  • 解码
  • 乱码
  • 信息
  • encodedbytes

得分解答快速导航

  • 帖主:zjlijunmin
  • hdt
  • jiezhi
  • pupo
  • lidong6
  • holym

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo