Coding: 1개의 글

[Delphi] WinHTTP.ResponseText 한글 깨질때

Posted by push0ebp
2014. 11. 1. 20:53 Coding/Delphi

예전에 한글 깨져서 코딩하다가만 프로젝트를 다시 살렸다. 그 땐 3일이나 삽질했었는데 후..

자꾸 깨지길래 치트엔진으로 메모리를 보니 EB 00 ?? 00 ?? EC 00 ?? 00 ?? 00 이렇게 WideString으로 되어있었다.

EB????EC????인데.. IdHttp를 써보고 UTF8Encode/Decode MultiByte<>WideChar 함수 여러개를 써봐도 안됐다 ㅠㅠ

우연히 네이버 검색 url에 %E?%??%??을 보고 URL 디코딩을 하니 출력이 잘됬다. 

너무 기쁜마음에 바로 함수를 짰다.


uses 에 IdURL 라이브러리를 추가하고 사용하자.


Function HttpEncode(ResponseText : String) : String;

var

  i,Len :integer;

  ps :PAnsiChar;

  s :String;

begin

  ps := PAnsiChar(ResponseText);

  Len := Length(ResponseText);


  for i := 0 to Len do begin

    s := s + '%';

    s := s + IntToHex(PWORD(@ps[i*2])^,2);

  end;


  Result := String(TIdURI.URLDecode(s));


end




var

  WinHttp :IWinHttpRequest;

begin

  WinHttp := coWinHttpRequest.Create;

  WinHttp.Open('GET','http://www.naver.com',False);

  WinHttp.Send('');

  WinHttp.WaitForResponse('');

  sRecv := HttpEncode(WinHttp.ResponseText);


잘 출력된다.