유니코드는 16비트의 단일한 값으로 모든 문자를 표현할 수 있는 문자 코드 체계이다.

 

유니코드를 지원하려면 문자형이나 문자열에 대해 C언어의 타입을 바로 쓰지 말고.

유니코드 설정에 따라 변경되는 중간 타입을 사용해야 한다.

 

C언어에 익숙한 사람들은 앞으로 문자나 문자열을 표현할 때 다음 타입들을 사용하도록 해야한다.

C 타입 유니코드 타입
char TCHAR
char* LPSTR
const char* LPCTSTR

char를 바로 쓴 소스는 유니코드로 바꿀 때 일일이 소스를 뜯어 고친 후 다시 컴파일해야 하지만

TCHAR라는 중간 타입을 사용한 소스는 프로젝트 설정에 따라 소스도 같이 바뀌는 효과가 있으므로

소스는 그대로 두고 컴파일만 다시 하면 된다. 문자열이 필요할 때도 char*를 쓰지 말고

가급적이면 LPSTR 또는 TCHAR*를 쓰는 것이 좋다.

 

문자열을 다루는 함수들도 C의 표준 함수를 쓰지 말고 가급적이면 다음과 같이 유니코드를 인식하는 함수를 사용한다.

C 표준 함수 유니코드 지원 함수
strlen lstrlen
strcpy lstrcpy
strcat lstrcat
strcmp lstrcmp
sprintf wsprintf

strlen은 char 타입의 문자열 길이만 조사하지만

lstrlen은 TCHAR 타입의 문자열에 대해서도 동작하므로 이식에 훨씬 더 유리하다.

문자열 상수도 타입이 있으므로 겹 따옴표안에 바로 문자열 상수를 쓰지 말고 TEXT 매크로를 둘러싸는 것이 좋다.

TCHAR* str = "szbuff";       // 일반 형식
TCHAR* str = TEXT("szbuff"); // TEXT 매크로

TEXT 매크로는 유니코드 설정에 따라 문자열 상수의 타입을 변경한다.

유니코드로 컴파일할 때는 각 문자가 16비트의 유니코드 문자가 되며,

그렇지 않을 때는 8비트의 안시(ANSI) 문자가 된다.

 

원칙적으로으로 문자열 상수에 이 매크로를 쓰는 것이 좋다.

+ Recent posts