Delphi/C++Builder의 2009 버전과 2010 버전에서는, VCL for the Web (IntraWeb)에서 한글을 사용하면 한글이 깨져 나오는 버그가 있습니다. 이 버그에 대해 여러 번 문의를 받았는데, 조금 전에 문제 해결 방법을 알아냈습니다.
위 파일을 다운받아 컴파일할 VCL for the Web 프로젝트에 추가해주기만 하면 됩니다. 그러면 언제 그랬느냐는 듯이 한글이 깨끗하게 입력, 출력 됩니다. uses 할 필요도 없고, 단지 프로젝트 추가로 끝입니다.
(추가: 이 파일은 2010 버전에는 기본적으로 포함되어 있으므로, 별도로 다운로드하거나 할 필요 없이, 그냥 소스 내에서 uses에서 추가해주시면 됩니다)
Delphi/C++Builder 2009 버전에서는 IntraWeb의 업데이트된 버전으로 업데이트를 해야 합니다. (2010 버전은 업데이트된 IntraWeb이 포함되어 있어 업데이트할 필요가 없습니다) 위 유닛이 제대로 동작하려면 10.0.15 버전 이상이 필요하며, 오늘 현재 IntraWeb의 최신 버전은 10.0.17 버전입니다. 업데이트된 IntraWeb은 아래 사이트에서 다운로드할 수 있습니다.
http://www.atozed.com/IntraWeb/Download/Files/index.EN.aspx
그리고 아래의 링크에서 Delphi/C++Builder 번들된 IntraWeb을 위한 업데이트 키를 받아야 합니다.
프로페셔널 에디션 – http://purchase.atozed.com/rinok/Edition.aspx?ID=10090
엔터/아키 에디션 – http://purchase.atozed.com/rinok/Edition.aspx?ID=10091
사족…
위의 UTF8ContentParser.pas 유닛은 VCL for the Web의 제작사인 Atozed에서 만든 것이 아니라 엠바카데로에서 만든 것이라고 하는데요. 한두달 전 쯤인 것 같습니다. 그런데 이게 IntraWeb에도 포함되지 않고 엠바카데로에서도 공식적으로 제공되지 않는 이유에 대해서는 잘 모르겠습니다. 본사에 문의를 해보겠습니다만, 일단 (문제가 되기 전까지는) 자유롭게 사용하시기 바랍니다.
delphi 2010 Ent. 에서 IntraWeb Demo의 FishFact 프로젝트에 해당파일 Add한후 실행하면 콘트롤들을 클릭해도 화면만 Refresh되고 제어가 안되네요(네비게이터의 편집,추가번튼을 클릭해도 편집모드 전환이 안됩니다). 해당 Pas파일을 프로젝트에서 Remove시키면 잘 되구요. 그리고 IWServerController 콤포넌트의 Version은 10.0.0으로 뜨네요 (이게 10.0.0.15 이상이 되어야 하나요–Delphi 2010 인데요 Upgrade Patch1 적용했구요).
살펴보니… FishFact 데모 프로그램의 왼쪽 아래에 있는 TIWDBFile 컴포넌트가 문제네요. 이 컴포넌트는 데이터베이스로 파일을 업로드하기 위해 사용하는 것인데, iframe을 이용해서 프로그램 자체와는 무관하게 독자적인 웹 요청을 하도록 되어 있습니다. 그 요청 부분이 먹통이 되는군요. 이건 인트라웹의 벤더인 Atozed에서 수정하지 않는 한 다른 방법이 없을 것 같습니다.
요약하자면, UTF8ContentParser.pas 파일을 사용해서 한글 깨짐 문제를 막으면 TIWDBFile 컴포넌트를 사용하면 안됩니다. 이걸 피하려면.. 파일을 업로드하기 위해서는, 한글 입력이 필요 없는 별도의 입력 화면(정확하게는 별도의 프로젝트)을 만들고 거기서 파일 업로드를 해야 할 듯 싶네요.
TIWDBFile 없애니까 잘됩니다. ㅋㅋㅋ 쌩큐베리감사.
인디는 언제 해결될런지.. 앞에 있는 회피 방법으로 해도 안되더라구요.. 그래서 현재 WebBrowser로 땜빵하고 있어요..ㅜㅜ