代码如下:
private byte[] name=new byte[32];
 win32API.API.ReadProcessMemory(this.openprocess, this.renwubase+this.NameOffset, out this.name[0], 32, 0);
string naemstr = System.Text.Encoding.Unicode.GetString(name);
this.nametext.Text = "角色名:" +naemstr;文本框显示乱码,晕了!

解决方案 »

  1.   

    try
    string naemstr = System.Text.Encoding.Default.GetString(name);
      

  2.   

    private byte[] name=new byte[32];
     win32API.API.ReadProcessMemory(this.openprocess, this.renwubase+this.NameOffset, out this.name[0], 32, 0);
    string naemstr = System.Text.Encoding.Unicode.GetString(name);//这句换成string naemstr = System.Text.Encoding.Default.GetString(name); 试一下,看看是不是这个问题this.nametext.Text = "角色名:" +naemstr;
      

  3.   

    tring naemstr = System.Text.Encoding.GetEncoding("utf-8").GetString(arrayByte,0,32);
      

  4.   

    sorry,打错几个字
    试试
    string naemstr = System.Text.Encoding.GetEncoding("utf-8").GetString(name,0,32);
      

  5.   

    挨个换 Encoding:
    gb2312
    utf-8
    换到和编码时一致就OK了
      

  6.   

    打印一下你的name数组,可能是数组内的数据本身不能转换成Unicode,如存在一些非显示字符
      

  7.   

    检查两点:
    1、name指向内存位置是否有误
    2、若1无误,再考虑原程序编码是Unicode、Utf、ASC等哪一种,事实上原程序未必用的是这些标准编码