服务端接收消息代码procedure TForm2.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
  AData: TBytes; ABinding: TIdSocketHandle);
begin
  memo1.Lines.Add(ABinding.PeerIP+' 来消息 ……' );
  memo1.Lines.Add(BytesToString(AData));
end;
客户端发送代码就一个IdUDPClient1.Send(memo1.Text);程序运行后,英文和数字没问题,就是中文会出现乱码我用的是2010 的indy 10 版本,哪位大侠能教我如何解决? 曾经用过 UTF8 ,结果光是加码了,不知道解码,服务端不知道怎么写了
IdUDPClient1.Send(memo1.Text,TEncoding.UTF8);希望能给出关键的代码,叩谢!!!!

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
       IdUDPClient1.Send(Memo1.Text,TEncoding.UTF8);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
        IdUDPServer1.Active :=true ;
        IdUDPClient1.Active :=true ;
    end;procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
      AData: TBytes; ABinding: TIdSocketHandle);
     var
      RecString:string;
      i:Integer;
    begin
      RecString:=StringOf(AData);
      Memo2.Lines.Add('收到数据:'+Trim(RecString));
    end;
    end.
      

  2.   

    终于搞定了,突发奇想的就搞定了
    接受信息代码memo1.Lines.Add(BytesToString(AData,TEncoding.UTF8));中文不再乱码
      

  3.   

    我在进行indy10.5.7这个版本进行idTCPClient及idTCPServer进行编程时同样汉字收发时会产生乱码,我在单元的里引用了 HTTPApp 单元,在发的时候这样写IdTCPClient.IOHandler.WriteLn(HTTPEncode(edtMsg.Text));
    在收的时候这样写HTTPDecode(IdTCPClient.IOHandler.ReadLn); 就可以用汉字进行通讯了