1. 유니코드

ASCII로는 영문(1Byte)밖에 표현 못한다. 한글을 사용하려 하거나 다른 나라 언어를
사용하기 위해선 255로써는 표현을 못했다. 그래서 보통 한글을 사용하기 위해서
2Byte로 처리를 해서 조합,완성형이라는 한글이라는 방식이 생기게 되었다.

다른 나라도 각자 알아서 2Byte라든지 다른 방식으로 처리해서 표현하게 되었는데, 이게 너무 다 다르다는 거다. 그래서 "모든 나라의 글자셋을 하나로 묶어 버리자!"라는 취지 하에 만들어 진게 유니 코드이다.

그런데 유니코드를 실제 바이트로 변환이 필요하게 되었고 인코딩 방식이 생기게 되었는데 하나의 글자 표현에 2바이트를 사용하는 UCS-2(2바이트) 또는 UTF-16(16비트) ,
영어는 1바이트 그외 다른 언어는 2바이트~6바이트까지 할당하는 UTF-8등이 있다.

-유니코드 : Wide Character로 16비트 코드를 가진다. wchar_t, wchar_t*로 표현됨.

- MBCS/DBCS : MBCS(Multi-Byte Character Set)은 하나의 문자가 한 바이트 이상 으로 구성된 문자열 셋을 말한다.  정확한건 모르겠고, 한 글자가 1바이트 이상으로 표현될수 있는 문자열셋을 말하나보당.

-ANSI : 8비트로 구성된거. 설명 필요 읍지.

-TCHAR : 그냥 MS에서 유니코드로 구성된 프로젝트일때는 WCHAR로 아니면 CHAR로 변환해주는 매크로라고 보면 쉽겠지.

유니코드로 되었있든 그냥 일반 MBCS, ANSI로 되어있든 TCHAR형으로 써주면 알아서 변경 되게 한다 라는 취지겠지 모.

ANSI               UNICODE                 TCHAR
strlen               wcslen                    _tcslen
strcat               wcscat                    _tcscat
strchr               wcschr                    _tcschr
strcmp             wcscmp                    _tcscmp
strcpy              wcscpy                    _tcscpy
strstr               wcsstr                    _tcsstr
strrev               _wcsrev                    _tcsrev
printf                wprintf                       _tprintf
sprintf               wsprintf                    _tsprintf
scanf               wscanf                     _tscanf



사용 예 :
TCHAR szTemp[10] = _T("유니코드");
int Len = _tcslen(szTemp);

MBCS에서 유니코드 변환시 필요 함수 : mbstowcs, MultiByteToWideChar
유니코드에서 MBCS 변환시 함수 : wcstombs, WideCharToMultiByte

ATL에서 제공하는 A2W , W2A 도 있다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC 디렉토리 생성  (0) 2013.08.14
쓰레드 생성 (펌글)  (0) 2013.08.14
쓰레드 생성.  (0) 2013.08.14
유니코드  (0) 2013.08.14
CEvent 클래스  (0) 2013.08.14
JPG to BMP , BMP to JPG 로 변환 코드  (0) 2013.08.14

+ Recent posts