代码如下:
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;文本框显示乱码,晕了!
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;文本框显示乱码,晕了!
string naemstr = System.Text.Encoding.Default.GetString(name);
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;
试试
string naemstr = System.Text.Encoding.GetEncoding("utf-8").GetString(name,0,32);
gb2312
utf-8
换到和编码时一致就OK了
1、name指向内存位置是否有误
2、若1无误,再考虑原程序编码是Unicode、Utf、ASC等哪一种,事实上原程序未必用的是这些标准编码