byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
            string str = Encoding.UTF8.GetString(bs);

解决方案 »

  1.   

    string = Convert.ToBase64String(byte[]);
    byte[] = Convert.FromBase64String(string);
      

  2.   

    因为计算机上通常用来处理的字符串是Unicode编码的,当转化成其他格式的编码后,Byte数组的长度自然和Unicode的不相同了吧
      

  3.   

    只需要记住一点,encoding.getbytes encoding.tostring的时候,必须用同一种encoding就不会有错
      

  4.   

    是有问题的,我遇到了楼主一样的情况
    做签名时生成的字节数组,128位,然后转成了string,这个时候再用同一种encoding转出字节数组的时候发现长度已经发生了变化。用gb2312时转出的长度是116,用utf-8转出的是246,希望有人能知道为什么会这样。
    貌似java并没有这种问题