一个GB2312编码的字节byte[] bs = new byte[] { 0xd6, 0xd0, 0xb9, 0xfa, 0xc8, 0xcb }; 
        string strGB= GB2312.GetString(bs);  //这个字符串的内容为"中国人" 
        string strUTF8=utf8.GetBytes(ss));   //字符串是乱码,但是如何用strUTF8来还原到原始的字节数组bs呢数组被UTF8.GetString()方法后,如何还原为原始的GB2312字节数组 

解决方案 »

  1.   

     byte[] bs = new byte[] { 0xd6, 0xd0, 0xb9, 0xfa, 0xc8, 0xcb };            string strGB = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Convert(Encoding.GetEncoding("GB2312"), Encoding.UTF8, bs)); // GB2312.GetString(bs);  //这个字符串的内容为"中国人"  
            MessageBox.Show(strGB);
      

  2.   

    楼上的兄弟可能没看清楚题目现在是用strUTF8(注意,此时的字符串已经是乱码)来还原成原始的字节数组(而不是字节转成字符串)
      

  3.   

     string str = "我们的家";
     byte[] bytes = Encoding.Default.GetBytes(str);
    byte[] newBytes = new byte[bytes.Length];
    int j = 0;
     for (int k = 0; k < strBytes.Length; )
       {
          string a = strBytes.Substring(k, 8);
          newBytes[j] = Convert.ToByte(a, 2);
          k = k + 8;
           j++;
       }
      string b = Encoding.Default.GetString(newBytes);
    这样可以把二进制的字符数据还原为原来的中文