IdTCPClient 发送消息包含中文的变成乱码,麻烦看下小弟我这个代码

IdTCPClient 发送消息包含中文的变成乱码,麻烦看下我这个代码
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzPrgres, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, ExtCtrls, XPMan, ComCtrls, Buttons;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    tmrCheckServerMsg: TTimer;
    IdTCPClient: TIdTCPClient;
    mmoinfo: TMemo;
    Edtmsg: TEdit;
    btnDisconect: TButton;
    btnConnect: TButton;
    pbProgress1: TRzProgressBar;
    pbProgress: TProgressBar;
    BitBtn1: TBitBtn;
    procedure btnDisconectClick(Sender: TObject);
    procedure EdtmsgKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure btnConnectClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdTCPClientWork(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Int64);
    procedure tmrCheckServerMsgTimer(Sender: TObject);
        private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses TypInfo;
{$R *.dfm}

procedure TForm1.btnConnectClick(Sender: TObject);
var
  Response: string;
  UserName: string;
name:pchar;len:dword;
begin
len:=30;
getmem(name,30);
getcomputername(name,len);
  IdTCPClient.ConnectTimeout := 5000;
  IdTCPClient.Connect;
  username:=name;
  //UserName := Format('U%.5d', [Random(99999)]);
  IdTCPClient.IOHandler.WriteLn(UserName);
  Response := IdTCPClient.IOHandler.ReadLn;
  if SameText(Response, 'LOGINED') then
  begin
    btnDisconect.Enabled := True;
    btnConnect.Enabled := False;
    tmrCheckServerMsg.Enabled := True;
    Caption := 'Client - ' + UserName;
  end
  else raise Exception.CreateFmt('登录失败: "%s"', [Response]);
end;

procedure TForm1.btnDisconectClick(Sender: TObject);
begin
 btnConnect.Enabled:=True;
 btnDisconect.Enabled:=False;
 tmrCheckServerMsg.Enabled:=False;
 Caption:='Client';
 IdTCPClient.Disconnect;
end;

procedure TForm1.EdtmsgKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key=VK_RETURN then
 begin
  if not IdTCPClient.Connected then Exit;
  if edtMsg.Text<>''then
  begin
   IdTCPClient.IOHandler.WriteLn(edtMsg.Text);
//edtmsg.Text:= EnCodeUTF8(edtMsg.Text);
   mmoInfo.Lines.Add(Format('发送消息:"%s"',[edtMsg.Text]));
   edtMsg.Clear;
  end;
  Key:=0;
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 try
  if IdTCPClient.Connected then
   btnDisconect.Click;
 except
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
 IdTCPClient.Host:='127.0.0.1';
 IdTCPClient.Port:=7982;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 form1.btnConnect.Click;
end;

procedure TForm1.IdTCPClientWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
//
pbProgress.Position:=AWorkCount;
 Application.ProcessMessages;
end;

type
  TSizeType = (stB, stK, stM, stG, stT);
function FormatFileSize(Size: Extended; MaxSizeType: TSizeType; var ReturnSizeType: TSizeType;
  const IncludeComma: Boolean = True): string; overload;
const
  FormatStr: array[Boolean] of string = ('0.##', '#,##0.##'); {do not localize}
var
  DivCount: Integer;
begin
  ReturnSizeType := stB;
  DivCount := 0;
  while (Size >= 1024) and (ReturnSizeType <> MaxSizeType) do
  begin
    Size := Size / 1024;
    Inc(DivCount);
    case DivCount of
      1: ReturnSizeType := stK;