앞서 비슷한 문제로 고민 하신 분들의 글과 댓글들 검색해봤고 그에 따라 소스도 수정해 보았는데 잘 되지 않아 다시 질문 드립니다. 소스의 일부를 적어 봅니다. 같은 종류의 에러로 고생 하신분들이나 해법을 알고 계신분들의 도움을 바라겠습니다.
[소스의 일부분]
procedure TMainProcess.InsertHistory(Memo: String);
var
ADBMemo : String;
begin
-생략-
ADBMemo := Format('%-34s %-20s %-8s', [ALocation, AMsgName,
FormatDateTime('yyyy-m-d hh:mm:ss', ADateTime)]);
with Q_HistoryW do begin
Close;
Sql.Clear;
Sql.Add('INSERT INTO HISTORY(MEMO) values(:PrintMemo));
ParamByName('PrintMemo').asstring := ADBMemo;
.
.
.
[소스의 일부분]
소스에서 ALocation과 AMsgName에 베트남어가 입력되는데 깨지는 상태로 DB 테이블에 입력이 되는군요.
현재 사용중인 시스템과 델파이,DB의 버전은 윈도우7, 델파이2010, 인터베이스(윈도우즈 NT 6.1 빌드 7601)입니다. 델파이2010의 화면에서는 베트남어가 당연히 잘 보여지구요. 인터베이스의 DB는 캐릭터셋을 NONE으로 설정 하여 사용중입니다.
DB단의 문제인 듯 싶어서 소스의 SQL문은 그대로 두고 DB 전체를 UNICODE_FSS로도 해보고 DB를 생성할때 캐릭터셋을 NONE으로 하고 HISTORY 테이블의 MEMO 필드만을 UNICODE_FSS로 해보아도 베트남어는 계속 깨져서 입력이 되는군요. 제 생각에는 델파이2010이 이미 유니코드를 지원하고 있고 테이블의 MEMO 필드의 속성을 UNICODE_FSS로 하면 위의 SQL문으로 입력할때 깨지지 않아야 할 것 같은데 참 안되네요. 참고로 IBCONSOLE(인터베이스 관리프로그램)의 SQL 작성시에 델파이 소스에 있는 베트남어를 포함한 인써트문으로 입력을 하니 SQL창에서도 베트남어가 깨지더군요. ^^;; 어떤 부분을 변경해줘야 할 지 도움 부탁드리겠습니다. 그럼, 수고들 하십시요.
|