TNT로 입력을 받으면 WideString으로 저장됩니다. 즉 '간자체'와는 전혀 상관 없이 유니코드로 저장되는거고, 인코딩 방식은 UTF-16입니다.
이를 UTF-8로 인코딩 하는 방법은 여러가지가 있으나...
1. 직접 구현.
사실 별로 어렵지 않습니다. 영문 위키피디아에서 UTF-8 설명한 부분을 조금만 읽어보시면 쉽게 이해됩니다.
2. VCL의 함수를 이용
저는 C++ Builder만 사용하므로 C++ 문법으로 설명합니다.
UTF8String MyUTF8 = UTF8Encode(TntEdit1->Text);
3. Windows API 이용
WideCharToMultiByte(CP_UTF8 ..... ); 함수를 이용하시면 됩니다.
디코딩 역시 비슷합니다.
VCL의 경우 UTF8Decode 함수를 쓰시면 되고 API는 MultiByteToWideChar 함수를 사용하세요.
박준철 님이 쓰신 글 :
: (1) Tnt 콘트롤 이용 중국어 간자체 입력 받고
: DB에 저장 하는데 간자체가 저장이 안되고 깨짐
:
: (2) (1) 번 내용을 해보려고 검색을 하다 보니
: DB에 저장할 땐 UTF-8로 인코딩 해야하고
: 읽어오실땐 디코딩 해야 한다는 내용을 봤는데요
:
: 질문 :
: 1 간자체로 입력 받은것을 UTF-8 인코딩 하는 방법
: 2 UTF-8 로 DB에 저장된 데이타 디코딩 하는 방법
:
: 너무 초보적인 질문이라 넘어가지 마시고
: 제발 부탁좀 드리겠습니다.
|