Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14900] Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다.
오랑캐꽃 [oranke] 2209 읽음    2013-12-13 17:43
델파이 버전이 뭔지는 안가르쳐주시네요~~ 뭐 2009 미만으로 생각하겠습니다.
필드타입을 varchar 대신 nvarchar 로, AsString 대신 Value 로 바꿔보세요.


이 글도 도움이 되실지 모르겠네요.
http://delphi.borlandforum.com/impboard/impboard.dll?action=read&db=del_qna&no=14193


김용무 님이 쓰신 글 :
: Widestring 으로 쓰면 될것 같아서 이래 저래 많은 버튼을 만들어서 테스트를 해봤는데.. 역시나 ????로 나오는군요.
: 맨탈이 붕괴되어 지고 있네요..ㅠ
: 혹시 서버 뷰테이블의 한글이 들어있는 필드가 Varchar(4000)으로 되어있어서일까요? 한글만 들어있지 않고 영문이랑 숫자랑 막 특수문자 같은것도 많이 들어있거든요..
: 1주일이 넘게 막막함과 싸우고 있습니다..ㅠ
: 아래는 오늘 테스트 해봤던 소스를 적어보았습니다.
: 도움 부탁드립니다...
: 메모 컨포도 IME 전부 IME_HANGUL로 바껏어요.
:
: procedure TForm1.Button1Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select * from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           memo1.Lines.Text :=     FieldByName('HOST_DATA').AsString;
:           TNTmemo1.Lines.Text :=  FieldByName('HOST_DATA').AsString;
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button2Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select HOST_DATA collate KOREAN_WANSUNG_CI_AS HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           memo1.Lines.Text :=     FieldByName('HOST_DATA').AsString;
:           TNTmemo1.Lines.Text :=  FieldByName('HOST_DATA').AsString;
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button3Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select * from View_Tablewhere card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           if CheckBox1.Checked = True then
:           begin
:             memo1.Lines.Text :=     UTF8Decode(FieldByName('HOST_DATA').AsString);
:             TNTmemo1.Lines.Text :=  UTF8Decode(FieldByName('HOST_DATA').AsString);
:           end
:           else
:           begin
:             memo1.Lines.Text :=     UTF8Encode(FieldByName('HOST_DATA').AsString);
:             TNTmemo1.Lines.Text :=  UTF8Encode(FieldByName('HOST_DATA').AsString);
:           end;
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button4Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select HOST_DATA collate KOREAN_WANSUNG_CI_AS HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           if CheckBox1.Checked = True then
:           begin
:             memo1.Lines.Text :=     UTF8Decode(FieldByName('HOST_DATA').AsString);
:             TNTmemo1.Lines.Text :=  UTF8Decode(FieldByName('HOST_DATA').AsString);
:           end
:           else
:           begin
:             memo1.Lines.Text :=     UTF8Encode(FieldByName('HOST_DATA').AsString);
:             TNTmemo1.Lines.Text :=  UTF8Encode(FieldByName('HOST_DATA').AsString);
:           end;
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button5Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select * from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           memo1.Lines.Text :=     AnsiToUtf8(FieldByName('HOST_DATA').AsString);
:           TNTmemo1.Lines.Text :=  AnsiToUtf8(FieldByName('HOST_DATA').AsString);
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button6Click(Sender: TObject);
: begin
:         with ADOQuery2 do
:         begin
:           close;
:           SQL.clear;
:           SQL.Text:= 'select HOST_DATA collate KOREAN_WANSUNG_CI_AS HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Application.ProcessMessages;
:           memo1.Lines.Text :=     AnsiToUtf8(FieldByName('HOST_DATA').AsString);
:           TNTmemo1.Lines.Text :=  AnsiToUtf8(FieldByName('HOST_DATA').AsString);
:         end;
:         showmessage('Commad Succes');
: end;
:
:
: procedure TForm1.Button9Click(Sender: TObject);
: begin
:         with ADODataSet1 do
:         begin
:           CommandType := cmdText;
:           CommandText := 'select HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Memo1.Lines.Text :=  WideStringToUTF8(ADODataSet1.Fields[0].AsVariant);
:           TNTMemo1.Lines.Text :=  WideStringToUTF8(ADODataSet1.Fields[0].AsVariant);
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button10Click(Sender: TObject);
: begin
:         with ADODataSet1 do
:         begin
:           CommandType := cmdText;
:           CommandText := 'select HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           Memo1.Lines.Text :=  WideStringToStringEx(ADODataSet1.Fields[0].AsVariant,949);
:           TNTMemo1.Lines.Text :=  WideStringToStringEx(ADODataSet1.Fields[0].AsVariant,949);
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button11Click(Sender: TObject);
: var
:   a,b : WideString;
: begin
:         with ADODataSet1 do
:         begin
:           CommandType := cmdText;
:           CommandText := 'select HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           a :=  ADODataSet1.Fields[0].AsVariant;
:           memo1.Lines.Text := AnsiToWide(@a,100,949);
:           b := ADODataSet1.Fields[0].AsVariant;
:           TntMemo1.Lines.Text := AnsiToWide(@b,100,949);
:         end;
:         showmessage('Commad Succes');
: end;
:
: procedure TForm1.Button12Click(Sender: TObject);
: var
:   a,b : WideString;
: begin
:         with ADODataSet1 do
:         begin
:           CommandType := cmdText;
:           CommandText := 'select HOST_DATA from View_Table where card_no =N'''+trim(Card_no.text)+'''';
:           open;
:           a :=  ADODataSet1.Fields[0].AsVariant;
:           memo1.Lines.Text := WideToAnsi(@a,100,949);
:           b := ADODataSet1.Fields[0].AsVariant;
:           TntMemo1.Lines.Text := WideToAnsi(@b,100,949);
:         end;
:         showmessage('Commad Succes');
: end;
:
: 김용무 님이 쓰신 글 :
: : 현재
: : 서버PC의 View Table을 사용하는데요. 이쪽은 한글 윈도우에 한글 MS-SQL 2008을 사용중입니다.
: :
: : 그런데 저는
: : 운영PC 영문윈도우에 독일 MS-SQL 2005를 사용중입니다.
: : 물론 한글 언어 추가 했습니다.
: :
: :
: : 문제는
: : MS-2005 studio에서 그짝 서버로 접속해 쿼리를 적어서 select * from View_Table 을 검색하게 되면 한글이 잘나오더라구요.
: :
: :
: : 그런데 이걸 이제 프로그램에 적용해서  ADOQuery 로 ODBC로 연결해서 language Setting도 Korean으로 하고
: :
: :
: : SQLTxt := 'select * from View_Table'을 적용한뒤 데이터를 Fieldbyname('Data').asString형으로 받아서
: : MS-2005에 사용하는 Table 에 넣기만 하면 한글이 ???로 에러가 나는군요.
: :
: :
: :
: : 그래서 보니 View_table은 한글이라 Varchar(4000) 으로 되어있고 제가 사용하는 테이블은 ntext 를 사용하고 있습니다.
: : 유니코드형을 사용하고 있는데..
: : 그래서 가져올때 SQLTxt := 'select Data collate korean_wansung_ci_as Data from View_Table' 이렇게 하여 한글로 바꾼다음에 테이블에 넣어 줘도 ???? 로 나오는군요...
: :
: : 개별 검색 할때도 SQLTxt := 'select Data collate korean_wansung_ci_as Data from View_Table Data_n = N'123123''
: : 이렇게 N을 넣어서도 불러 와도 안되네요..
: :
: : 혹시 버젼 문제 일수 있을까요?
: : MS-2005에서 2008이 다른 PC도 SQL Studio에서  잘안된다고 서버PC담당자가 말씀하시더라구요.
: :
: :
: : 그런데 서버PC View Table을 동일 사향의 2005 버젼에서 사용해도 Studio에서는 select하면 한글이 나오는데 프로그램에 적용시키면 한글이 ????? 나오는군요..
: :
: :
: : 검수 완료일이 이번주라.. 현재 마음은.. 마치 꼬인 실타래 처럼..복잡하군요.. 이럴거라곤 생각도 못했거든요..
: :

+ -

관련 글 리스트
14893 MS-SQL 2005에서 한글이 ?????로 깨집니다. 김용무 2413 2013/12/10
14898     Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 김용무 2637 2013/12/12
14900         Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 오랑캐꽃 2209 2013/12/13
14902             Re:Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 김용무 2306 2013/12/13
14907                 Re:Re:Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 오랑캐꽃 2969 2013/12/17
14912                     Re:Re:Re:Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 김용무 3461 2013/12/19
14894     Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 오랑캐꽃 2621 2013/12/10
14895         Re:Re:MS-SQL 2005에서 한글이 ?????로 깨집니다. 김용무 2891 2013/12/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.