赋值错了
if(i<bytes.Length) bytes[i]=test[i];
改为:if(i<bytes.Length) test[i]=bytes[i];

解决方案 »

  1.   

    test数组各个字节都为0,ascii码全为0的字符组成的字符串当然看不到了。
      

  2.   

    用MessageBox.Show(Encoding.UTF8.GetString(test[0]));看看
      

  3.   

    猜测一下:是不是你添的0不能被Encoding.UTF8正确解码。
      

  4.   

    老兄的程序错的很离谱啊!
    string aa="aa";
    byte[] bytes=Encoding.UTF8.GetBytes(aa);
    byte[] test=new byte[1024];  //就两个字母,声明这么大个数组你内存一个G吧
    for(int i=0;i<1024;i++)  //你循环1024,怕得越界吧
    {
    if(i<bytes.Length) bytes[i]=test[i];  //i肯定小于1024。test是空的,这样一来bytes也空了
    else test[i]=0;  //test本来是空的,现在成了0。
    }
    MessageBox.Show(Encoding.UTF8.GetString(test)); //你把0显示出来,我没做过。真不知道能看到什么。
      

  5.   

    更正一下元程序:
    string aa="aa";
    byte[] bytes=Encoding.UTF8.GetBytes(aa);
    byte[] test=new byte[1024];
    test[0]=1;
    test[1]=0;
    for(int i=2;i<1024;i++)
    {

    if(i-2<bytes.Length) test[i]=bytes[i-2];
    else test[i]=0;
    }
    MessageBox.Show(Encoding.UTF8.GetString(test));
    老兄的程序错的很离谱啊!
    我只是简单写一下说明问题,难道我把程序都贴出来,让你看半天?
      

  6.   

    test数组各个字节都为0,ascii码全为0的字符组成的字符串当然看不到了。
    说的对