array of byte转string后,中文乱码,该怎么处理

array of byte转string后,中文乱码

var
 s,d:utf8String;
 b:array of byte;
 i:integer;
 len:integer;
begin
 s := AnsiToUtf8(Edit2.Text);
 len := Length(s);
 SetLength(b,len);
 for i := 1 to len do
 begin
   b[i-1] := ord(s[i]);
 end;
 for i := 1 to len do
   begin
    d[i] := char(b[i-1]);
   end;
  sleep(0);
end;

这样转出来后,中文全成乱码了,这要怎么处理
------解决思路----------------------
首先你要知道你转换它干什么?如果只是要复制走,那可以用move,如果只是以另一种方式访问,既没必要转换,也没必要复制,Delphi有一个非常NB的特性,可以给一个变量声明其他类型的别名:
var
  s: string;
  p: PByte absolute s;
  i: integer;
//...
  s := Edit2.Text;
  for i := 0 to Length(s) * SizeOf(char) - 1 do
// p[i] 现在表示s的一个字节