Q&A

  • [질문] IdHTTP.Get 사용시, 한글이 깨지는 문제는 어떻게 해결하나요?

안녕하세요.
IdHTTP.Get 사용하면서 한글이 깨져서
차근차근 테스트하면서도 막히는 부분이 있어서 고민하다가 질문올립니다.


상황 설명을 드리자면...

서버(123.123.123.123)에 test.ASP 파일을 두고,

델파이에서는 이렇게 작성하고
<!--CodeS-->
IdHTTP1.Get('http://123.123.123.123/test.asp?A=aaa&B=한글한글');
<!--CodeE-->

서버의 test.ASP 파일은
<!--CodeS-->
A = trim(request("A"))
B = trim(request("B"))

response.write A & "-and-" & B
response.end
<!--CodeE-->

이렇게 작성하여 Get 을 사용해서 서버의 웹브라우저 주소창에 입력할 문자열을 보내고,
결과값으로 aaa-and-한글한글 을 예상한 테스트였습니다.

그런데 결과는
aaa-and-????
이런 식으로 나오더라고요.
그래서 한글이 깨지는 문제라고 생각하여 이에 관해서 도움을 얻고자 질문 올립니다.


참 이상한 건;;
제가 델파이 2007에서 개발하다가 오늘 델파이 2010으로 업그레이드 했거든요.
근데 2007에서는 제대로 된 결과가 나오는데 2010에서는 한글이 ?? 로 나옵니다.

여러 검색으로 UTF8머시기하는 것도 해봤고,
Get 안에 들어가는 변수를 UniCodeString 타입으로도 선언해봤고,
등등 해봤는데 답이 안 나오더라고요;;


관련 문제를 해결하셨거나, 해결책을 알고 계신 개발자 분들의 도움 부탁드립니다.

감사합니다.





3  COMMENTS
  • Profile
    GGL 2010.04.28 08:50
    기억이 가물가물 .....idhttp 컴포=> request==>useragent 항목검색
  • Profile
    한원희 2010.04.29 00:10
    제 생각에는 한글로 써질 부분을 AnsiString로 변환한 후에, URLEncoding해주면 될듯.
    아니면, asp를 UTF8을 지원하도록 코딩을 새롭게 하시던가요... ^^
  • Profile
    윤영훈 2010.04.29 21:19
    답변 감사드립니다.

    GGL 님이 답변주신 내용으로 검색하여 찾아봤는데 원하는 내용이 나오지 않았지만, 답변 감사드립니다.
    검색하여 하나씩 다시 시도하다가도 막혀서 devgear.co.kr 에 메일을 보내서 문제를 해결할 수 있었습니다.

    대부분 검색의 내용은, IdHTTP.Get() 이용하여 값을 받아올 때 한글이 깨지는 문제에 대한 방법은 있었는데
    제가 막혔던 부분은 IdHTTP.Get()으로 값을 보낼 때 한글이 깨지는 문제였었습니다.

    같은 문제로 고민하시는 분들, 참고용으로 devgear 에서의 답변메일내용을 정리한 것입니다.
    ==================================================
    Indy HTTP 를 사용하여 한글을 전달할 때, URL 인코딩이 필요합니다.
    이런 인코딩을 위한 함수가 델파이 VCL에 이미 있는데, HTTPEncode()라는 함수입니다.
    HTTPApp 유닛에 선언되어 있으므로 이 유닛을 uses HTTPApp 하셔야 하고요.

    기존의 방법이

    IdHTTP1.Get('http://123.123.123.123/test.asp?A=aaa&B="한글한글"');

    라면 아래와 같이 변경하여 코딩하시면 됩니다.

    IdHTTP1.Get('http://123.123.123.123/test.asp?' + HTTPEncode('A=aaa&B="한글한글"'));

    ==================================================

    한원희 님이 답변주신 내용이 아마도 제가 찾던 방법과 가까운 것 같습니다.
    결국 IdHTTP.Get()으로 값을 보낼 때 한글의 인코딩하는 것이 2007에서는 알아서 됐었는데 2010에서는 인코딩이 필요했었습니다.

    답변 주신 두분 감사드립니다.

    • phono
      2010.04.30 21:33
      qrDBTEXT, QRLABEL 모두 그런가요? 그리고 해당 컨트롤의 AUTOSIZE = fALSE로 하시고 정렬기준을 ...
    • 박준영
      2010.05.10 22:31
      phono 님 qrDBTEXT, QRLABEL 둘다 같고요... ㅠ.ㅠ AUTOSIZE = fALSE 이건 해보니.. 문제가 없네요.. ...
    • 땅쿠
    • 2010.04.30 00:49
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2010.04.30 18:28
      안녕하세요.. 아침에 급조해서 만들어봤습니다.. Delphi2010 으로 구현했되었구요.. 현재 LocalPC 에...
    • 땅쿠
      2010.04.30 20:02
      감솨합니다.. 뚝딱 만들어내는 실력이 부러울 따름입니다.... 감사히 잘 활용하겠습니다.
    • 구창민
      2010.05.01 01:08
      땅쿠님 .. 쪽지로 질의를 보내시면 대부분은 답변을 안주십니다...앞으론 쪽지로 주지 마시구요.. 질...
    • 땅쿠
      2010.05.01 03:28
      감솨합니당... 그냥 질답에 올리면 못 보실까봐 쪽지로 보내게 되었습니다...
    • 박경남
    • 2010.04.29 23:20
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 인생무상
      2010.04.30 00:22
      헐.... function T_form1F.egubn(var s:string):string ; //76번째줄 --> function TFo...
    • 이용벽
      2010.04.30 00:29
      추가해서 또 하나 function T_form1F.egubn(var s:string):string ; //76번째줄 begin case...
    • 하앍
      2010.05.01 01:56
      답변 감사드립니다^^
    • 땅쿠
    • 2010.04.29 18:31
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2010.04.29 19:37
      팁 란에 검색 하시면 MAC Address 구하는 방법이 나와 있습니다.
    • 땅쿠
      2010.04.29 19:51
      먼저 답변 감사드리구요. 제 질문은 위에 3가지를 모두 해결할 수 있는 방법이 궁금한겁니다. 혹 팁란...
    • phono
      2010.04.30 21:36
      IPhelpapi.dll을 라이브러리화 한게 델파이 사이트에 있을겁니다. 그걸 가지고 처리 하면 될듯 하고요...
    • 땅쿠
      2010.05.01 00:52
      phono 님 해당 답글 이제서야 봤네요... 감사합니다.
    • 정경철
      2010.04.29 19:36
      파라독스 로컬을 사용하면 생기는 파일 입니다. 제어판에 BDE 설정이 있는데 그곳에서 설정을 하면 자동...
    • 신태섭
      2010.08.21 07:43
      델파이 프로그램 실행하실때 마우스 우클릭하셔서 관리자모드로 실행하시면 됩니다. C:\에 파일을 만들...
    • 윤영훈
    • 2010.04.28 03:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • GGL
      2010.04.28 08:50
      기억이 가물가물 .....idhttp 컴포=> request==>useragent 항목검색
    • 한원희
      2010.04.29 00:10
      제 생각에는 한글로 써질 부분을 AnsiString로 변환한 후에, URLEncoding해주면 될듯. 아니면, asp를 UT...
    • 윤영훈
      2010.04.29 21:19
      답변 감사드립니다. GGL 님이 답변주신 내용으로 검색하여 찾아봤는데 원하는 내용이 나오지 않았지만...
    • 이재신
    • 2010.04.27 23:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.04.29 01:56
      설치된 TrayIcon컴포넌트가 tanttaskbaricon인지 확인해보세요. Environment Options던가 Project Opti...
    • 땅콩맨
      2010.04.28 02:44
      C#에도 sendbuffer라는 함수가 존재합니다. 형식만 맞춰주면되는데... @를 어떻게 바꿔야할지만 알면 되...
    • 박준영
      2010.04.27 19:22
      앗... 입력제한 이렇게 검색하면 않나오던 것들이 입력 제한 이렇게 검색하니... 많은 답변이 나오네요....
    • 땅콩맨
      2010.04.28 02:37
      진정한 검색을 터득하셨군요? ㅋㅋ
    • 백록화
      2010.04.27 21:46
      델파이로는 안돼고...Free Pascal / Lazarus 로는 개발들 하시는거 같던데요.. (델마당에 Lazarus 게시판...
    • 델초보
      2010.05.03 17:38
      델파이 프리즘으로 개발은 안되나요?........
    • 백록화
      2010.05.03 19:31
      PDA에 닷넷 플랫폼을 올리면...프리즘으로 가능하..겟죠?
    • 허진영
    • 2010.04.26 23:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • isul
      2010.04.27 01:40
      Math.Mean(const Data: array of Double)으로 선언되어 있습니다. 동적 배열을 넣어도 정상 동작됩니다.
    • 허진영
      2010.04.27 07:44
      답변감사합니다. 그런데 제가 글을 쓴것처럼 에러가 나네요. 제가 언뜻생각한건 형변환이였구요. ...
    • 아이오
      2010.05.10 20:07
      자답 : 웬지는 모르겠지만 제가 mysql table 명을 대문자로 했더니 인식을 못하더군요... 테이블명 소...
    • 김영훈
    • 2010.04.26 22:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 권익수
      2010.04.27 14:12
      "TRichEdit"를 사용해보세요. "ScrollBars" 옵션을 "ssBoth"로 설정하고, "HideScrollBars" 옵션을 "Tr...
    • 김영훈
      2010.04.29 18:49
      컴포넌트를 잘 몰라서 한참 헤맸었는데.. 감사합니다 ^^ㅋ
    • 유영택
    • 2010.04.26 18:33
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.04.26 22:17
      gpl라이센스에 동의한다면 상용으로 사용해도 무관합니다. 그리고 만들어진 소프트웨어는 암묵적으로는...
    • 이종탁
      2010.04.26 23:13
      mysql은 GPL과 상용 라이센스 두가지가 있고 상용 프로그램은 상용 라이센스를 구입해야 합니다. 그리...
    • 땅콩맨
      2010.04.27 12:19
      아, 소스를 공개해야 되는거에요?
    • 김상철
    • 2010.04.26 04:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 한규호
    • 2010.04.24 19:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.04.26 02:11
      C의 Union과 같습니다. 다만 제약사항으로는 맨 마지막에 위치해야 된다는것빼고는 같아요...
    • 한규호
      2010.05.01 07:01
      아 C의 Union 과 같나요? 모습이 많이 달라 보여서 긴가. 민가 했는데 그렇군요~~^^ 답변 감사합니다.^^