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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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