정원철 님이 쓰신 글 :
: 델파이 XE, Interbase컴포넌트, 임베디드firebird 2.5로 간단한 디비프로그램을 만들고 있는데요
: 디비생성시 charset 'None'으로 지정해서 만들었습니다.
:
: 테이블데이터를 Select하여 TDBGrid 에 뿌리면 한글이 깨져부리는데 며칠 삽질중입니다.
:
: IBExpert 로 테이블을 보면은 한글이 제대로 나오는데 왜 DBGrid에 깨지는지..ㅜㅜ
:
: 아래 답변글에 데이터베이스 Charset은 중요하지않다고 하셨는데 그럼 컴퍼넌트의 문제인건데..
:
:
:
: 방법을 부탁드립니다.
:
:
: // DB 접속
: procedure TForm1.Button1Click(Sender: TObject);
: begin
: IBDatabase1.DatabaseName := 'd:\TEST.GDB';
:
: IBDatabase1.Params.Clear;
: IBDatabase1.SQLDialect := 3;
: IBDatabase1.Params.Add('user_name=sysdba');
: IBDatabase1.Params.Add('password=masterkey');
: IBDatabase1.LoginPrompt := false;
: IBDatabase1.Connected := True;
:
: Label1.Caption := 'Connected DB OK!!!';
:
: IBTransaction1.DefaultDatabase := IBDatabase1;
: IBQuery1.Database := IBDatabase1;
: DataSource1.DataSet := IBQuery1;
: DBGrid1.DataSource := DataSource1;
:
: end;
: // Table 셀렉트하기
: procedure TForm1.Button2Click(Sender: TObject);
: begin
: if not IBDatabase1.Connected then
: begin
: Showmessage('Database와의 연결을 먼저 하십시오..');
: Exit;
: end;
:
: with IBQuery1 do
: begin
: Close;
: SQL.Clear;
: SQL.Add('Select * From DAILY_DATA');
: Open;
: end;
: end;
:
결국 제가 해결했네요 ^^
1. 디비를 charset 'UNICODE_FSS'으로 생성합니다.
2. 코딩에서 디비접속시
IBDatabase1.Params.Add('lc_ctype=UNICODE_FSS'); 추가합니다.
디비생성을 charset -> 'UNICODE_FSS' 하여도 IBDatabaseInfo1.Database.CharacterSet 로
찍어보면은 'NONE' 으로 그냥 돼여 있는거예요
그러니 lc_ctype 을 추가해야 DBGrid에 한글이 깨지지 않고 보입니다.
참고하세요
https://forums.embarcadero.com/thread.jspa?threadID=43673
|