프로그래밍 언어/Win32

Win32 문자집합 설정

원원 2023. 7. 23. 14:33

안녕하세요. 오늘은 Win32 유니코드에 대해 알아보겠습니다

문자열을 저장할때 일반적으로 char s[]  = "wowon"을 저장하면 아래처럼 공간이 할당됩니다

1바이트에 영문자 1개가 저장됩니다.

 

한글을 저장할때 2byte를 사용하고 영문자를 저장할때 1byte가 저장된다고 해보겠습니다(UTF-16)
두가지 방식으로 "원원 won"을 저장해보겠습니다

멀티 바이트 문자 집합(MBCS)

한글은 2byte, 영문자는 1byte로 저장됩니다

 

유니코드 문자 집합

한글이던 영문자던 2byte로 저장됩니다.

c언어에서 유니코드를 위한 자료형이 있습니다. wchar_t이고 크기는 2바이트입니다.

 

멀티 바이트의 장점은 낭비되는 공간이 없습니다. 단점은 글자의 개수와 공간의 크기가 일치하지 않는 것입니다.
유니코드의 장점은 글자의 개수와 공간의 크기가 일치합니다. 단점은 영문자를 사용했을 때 낭비되는 공간이 있습니다.
이러한 방식들을 선택해서 사용할 수 있습니다.

 

유니코드 자료형 사용하기
유니코드는 WCHAR 자료형을 사용합니다 (typedef wchar_t WCHAR;    // wc,   16-bit UNICODE character)
WCHAR s[] = L"wowon";
위와같은 형태로 선언을하고 문자열에는 L을 붙여주는데 L은 유니코드라는 의미입니다.

멀티바이트 또는 유니코드 자료형 사용하기
문자집합 설정이 유니코드설정, 멀티바이트설정에 따라서 자동으로 바꿔주는 자료형이 있습니다.
TCHAR s[] = _T("wowon");
멀티바이트 설정이면 char s[] = "wowon";으로 변경되고 유니코드 설정이면 WCHAR s[] = L"wowon";으로 변경됩니다.

'프로그래밍 언어 > Win32' 카테고리의 다른 글

Win32 파일입출력  (0) 2023.07.23