用JAVA可比较容易的从GBK向IBM-1047转码,但是用C#怎么实现啊?研究了很长时间了也没有结果,现在求助大家,谢谢!!!

解决方案 »

  1.   

    System.Text.Encoding类可以实现转码。
      

  2.   


    byte[] data = UnicodeEncoding.UTF8.GetBytes("This is the UTF8 strings");Encoding gbk = UnicodeEncoding.GetEncoding("GBK");
    Encoding ibm1047 = UnicodeEncoding.GetEncoding(1047);char[] ibmOuts = ibm1047.GetChars(data);
    Console.WriteLine(ibmOuts);char[] gbkOuts = gbk.GetChars(ibm1047.GetBytes(ibmOuts));
    Console.WriteLine(gbkOuts);
      

  3.   

    Encoding encodingGBK = Encoding.GetEncoding("GBK");
    Encoding encodingIbm = Encoding.GetEncoding("IBM-1047");
    byte[] bytes = Encoding.Convert(encodingGBK ,encodingIbm ,srcBytes);
      

  4.   

    Encoding.GetEncoding("IBM-1047"); 
    应该这样的:
    Encoding.GetEncoding("IBM01047"); 
      

  5.   

    谢谢大家的回答~
    我用了lalac提供的比较详细的代码,转码后的内容是由异体e,异体a,以及问号组成的。我以前自己实现的转码后的内容大致也是这样的。
    但是我同事利用c++和java实现的IBM1047的转码后的内容大都由乱码汉字组成的,,,这是为什么阿??
      

  6.   

    你同事写的应该等价下面这段:Encoding gbk = UnicodeEncoding.GetEncoding("GBK");
    Encoding ibm1047 = UnicodeEncoding.GetEncoding("IBM01047");byte[] data = ibm1047.GetBytes("This is the UTF8 strings");char[] ibmOuts = ibm1047.GetChars(data);
    Console.WriteLine(ibmOuts);char[] gbkOuts = gbk.GetChars(ibm1047.GetBytes(ibmOuts));
    Console.WriteLine(gbkOuts);输出为:This is the UTF8 strings
    銏墷@墷@匑溷气@ⅲ檳晣?
      

  7.   

    看看这个
    http://www.qqgexing.com/fuwu/jfc.asp