델파이

indy10 TCP , UDP 한글깨짐 문제

미스터몽키 2012. 7. 5. 00:34

/* 개발환경 델파이 2007에서 indy 10.5.8.0 */


인디9에서 인디10은 많은 것이 변했다.


그러나 같은 인디 10 중에서 최신 indy 10.5.8.0도  빌드 버전에 따라  파라메터들이 바뀐 것도 있다.


또한  본격적으로 UTF8이 사용되므로 인한 한글 깨짐 혼선이 나타난다.


델파이와  인디의 인코딩이 다름으로 인한 문제인데


최근 작업중 TIdTCPClient, TIdTCPServer, TIdUDPServer, TIdUDPClient등에서

한글깨짐이 발생하여 그 해결 책을 정리한다.


해결방법은 선택 파라메터를 비워두지 말고  enUTF8을 넣는다.


- TCP클라이언트에서

IdTCPClient1.IOHandler.WriteLn(Msg, enUTF8); 


- 서버 IdTCPServer1Execute 이벤트에서는 

Msg := AContext.Connection.IOHandler.ReadLn(enUTF8);


특히 UDP 계열은 선택 파라메터를 모두 채운다

- 보낼때

IDUDPServer1.Send(PeerClients[i].PeerIP,

                     PeerClients[i].Port,

                     MyID + 'Send Message : ' + edMsg.Text, enUTF8, enUTF8);


-받을때  idUDPServer1UDPRead 이벤트에서

mmoUDPMsg.Lines.Add(BytesToString(AData, enUTF8, enUTF8));


이 역시 델파이 버전마다 차이가 있을 수 있다.

시간이 지나 델파이와 인디가 모두 UTF8이 기본 인코딩이면 해결될 문제지만...