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

C++빌더 Q&A
C++Builder Programming Q&A
[46478] Re:[급질문]BCB6+TNT+MySQL+utf8+한글+중문+영어
왕초보 [] 2816 읽음    2006-09-08 11:15
phpMySQL은 웹이므로 당연히 utf8입니다. 지원이 되죠.
어플리케이션은 상황이 좀 다릅니다. 운영체제에서 유니코드는 지원하지만
어플리케이션 자체가 utf8은 아니죠.
예를 들어 오라클(윈도우환경)의 경우 설치시 utf8로 설치 했다고 해서
클라이언트툴이 utf8은 아닙니다.(win949입니다.)
이건 어떤 의미인고 하니...단지 클라이언트는 내가 어떤 캐릭터셋 환경에서 어떤 캐릭터 셋을 사용한다고
서버에 알려줄 뿐입니다.
mysql의 예를 들어 보겠습니다. (window환경)
mysql설치시에 utf8로 설치 합니다.
웹에서는 utf-8로 설정하면 한글 잘됩니다.
그런데 클라이언트(툴,어플리케이션,개발..)에서는 한글이 깨져 보이죠. 이건 당연합니다.
이 클라이언트가 웹(웹브라우저url)하고 환경이 다르기 때문이죠.
그래서 클라이언트(c/s)에서 utf8로 맞추어야 합니까? 아닙니다.
내가 어떤 캐릭터셋의 클라이언트(c/s)를 쓰고 있다고 서버에 알려주어야 합니다.
즉 euckr이라고 해주어야 합니다. utf8이 아니고...
왜냐하면 오라클의 예에서 말했듯이 자신의 환경이 utf8이 아니기 때문이죠.
닷넷에서도 마찬가지 입니다. 다음과 같이 (mysql서버는 utf8입니다.)
윈도우에서
private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = "DRIVER={MySQL ODBC 3.51 Driver};" +
                          "SERVER=localhost;" +
                          "DATABASE=MyTestDb;" +
                          "UID=test;" +
                          "PASSWORD=1234;" +
                          "OPTION=3;" +
                          "stmt=set names euckr";
            string commandString = "select * from table";

            OdbcDataAdapter DBAdapter = new OdbcDataAdapter(commandString, connectionString);

            DataSet DS = new DataSet();
            DBAdapter.Fill(DS, "table");
            dataGridView1.DataSource = DS.Tables["userdb"].DefaultView;
        }
이렇게 해야 c/s에서 한글이 보입니다.(델파이로 연결 할 때도 마찬가지)
stmt=set names utf8로 해야 할 것 같은데 아닙니다. 나의 환경이 utf8이 아니기 때문이죠.
일례로 윈도우 명령프롬프트(도스창)에서 쿼리 해보면 당연히 한글이 깨져 보입니다.
도스창은 win949이고 mysql은 utf8이기 때문이죠.
그럼 도스창을 utf8로 맞추어야 하나요? 아닙니다. 도스창 자신은 한글 캐릭터의 이런 캐릭터를 사용한다고
서버에 알려주어야 합니다.
즉, 명령창에서 set names euckr 해주어야 한글이 보입니다.
결론은 웹하고 어플리케이션하고 다르다는 겁니다. 캐릭터셋 부분이....


임영우 님이 쓰신 글 :
: 안녕하세요.
: 중문윈도우즈XP Pro 기반에서,
: BCB++6 + Tnt + MySQL 기반에 db를 utf8로 만들어 사용하려 합니다.
: DB관련 컴포넌트는 Zeos를 사용합니다.
: phpMySQL로 접속해서 select 해 보면 결과가 한/중모두 문제 없이 잘 나옵니다.
: TNT를 사용해서 한/중문을 동시에 지원하는 db사용 프로그램을 개발하려 합니다.
: tnt에서는 글자들이 죄다 ??? 이렇게 물음표로 나옵니다.
: TntDBGrid의 Columns의 Font->Name과 Font->CharSet을 아무리 바꾸어 보아도 다 물음표로 나옵니다.
: 그래서 select 한 것을 TntEdit1->Text에 넣어보려 했습니다.
: TntEdit1->Font->Name 과 TntEdit1->Font->CharSet을 아무리 바꾸어 보아도 다 물음표로 나옵니다.
:
: 또, 중문윈도우즈의 국가및언어옵션->고급->"유니코드를 지원하지 않는 프로그램의 언어 버젼과 일치하는 언어를 선택하십시오" 에서 "한국어"로 설정하면, 한글/중문 모두 아무 이상 없이 잘 나옵니다.
:
: 그렇다면.... 한글윈도우즈에서는 기본적으로 문제 없이 잘 될 것이라는 생각인데요....
: 폰트의 문제인가요?
: TNT는 유니코드를 위한 컴포넌트인데.... 이 설정에 영향을 받는다는 것이 또 좀 이상합니다.
: 제가 뭘 잘못한 것인가요?
:
: 이거 어떻게 해야 해결이 될까요?
: 도와주세요.
: .

+ -

관련 글 리스트
46477 [급질문]BCB6+TNT+MySQL+utf8+한글+중문+영어 임영우 1700 2006/09/08
46478     Re:[급질문]BCB6+TNT+MySQL+utf8+한글+중문+영어 왕초보 2816 2006/09/08
46483         Re:Re:[급질문]BCB6+TNT+MySQL+utf8+한글+중문+영어 임영우 1713 2006/09/08
46485             Re:Re:Re:[급질문]BCB6+TNT+MySQL+utf8+한글+중문+영어 왕초보 2335 2006/09/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.