[윈도우즈 시스템 프로그래밍] 아스키코드 vs 유니코드
1. Windows에서의 유니코드
문자셋(Character Sets)의 종류와 특성
아스키코드 : 1바이트(7비트 + 1비트)를 사용. 256 개의 문자를 사용할 수 있음.
유니코드 : 2바이트를 사용. 65536개의 문자를 사용할 수 있음.
문자셋의 3가지 종류
SBCS(Single Byte Character Set) : 1바이트만을 사용하는 방식(아스키코드 기반 문자열)
MBCS(Multi Byte Character Set) : 1바이트와 2바이트를 혼용해서 사용하는 방식(아스키코드 + 유니코드)
WBCS(Wide Byte Character Set) : 2바이트만을 사용하는 방식(유니코드 기반 문자열)
WBCS 기반의 프로그래밍
char 자료형 대신 wchar_t 사용 : wchar_t는 2바이트를 사용(typedef unsigned short wchar_t)
"ABC"를 대신하는 L"ABC" : wchar_t str[] = L"ABC" 방식으로 사용
strlen을 대신하는 wcslen : 유니코드 기반의 문자열 함수를 사용
ex) strlen : size_t wcslen(const wchar_t* string)
strcpy : wchar_t* wcscpy(wchar_t* dest, const wchar_t* src)
strncpy : wchar_t* wcsncpy(wchar_t* dest, const wchar_t* src, size_t cnt)
strcat : wchar_t* wcscat(wchar_t* dest, const wchar_t* src)
strncat : wchar_t* wcscat(wchar_t* dest, const wchar_t* src, size_t cnt)
strcmp : int wcscmp(const wchar_t* s1, const wchar_t* s2, size_t cnt)
strncmp : int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t cnt, size_t cnt)
printf : int wprintf(const wchar_t* format [, arguemt]...)
scanf : int wscanf(const wchar_t* format [, arguemt]...)
fgets : wchar_t* fgetws(wchar_t* string, int n, FILE* stream)
fputs : int fputws (const wchar_t* string, FILE* stream)
size_t : typedef unsigned int size_t;
wmain 함수에 대한 이해
왼쪽의 main에서는 MBCS 기반으로 구성되어 인자로 전달된다.
오른쪽의 wmain에서는 WBCS 기반(유니코드)으로 구성되어 인자가 전달된다.
참고: 뇌를 자극하는 윈도우즈 시스템 프로그래밍. 윤성우 저