Windows :: 문자셋 종류, MBCS, WBCS
/*
* made by so_Sal
*/
문자셋의 종류와 특성
SBCS (Single byte Character set)
문자를 표현하는데 1바이트 사용. - ASCII Code
MBCS (Muiti Byte Character Set)
한글은 2바이트, 영문은 1바이트 - Multi : 문자열의 종류에 따라 다른 크기를 가진다.
WBCS (Wide Byte Character Set)
문자를 표현하는데 2바이트 사용. - UNICODE
안정적이기 때문에 많이 사용한다.
#include<stdio.h>
#include<string.h>
int main(void){
char str[] = "ABC한글";
int size = sizeof(str);
int len = strlen(str);
printf("배열의 크기 : %d\n",size); // 배열의 크기 : 8
printf("문자열 길이 : %d\n",len); // 문자열 길이 : 7
return 0;
}
배열의 크기 : ABC ( 1 * 3 ) + 한글 ( 2 * 2) + NULL = 8
문자열 길이 : ABC ( 1 * 3 ) + 한글 ( 2 * 2) = 7
문자열의 길이는 우리가 보기엔 5인데 (ABC한글) 출력결과는 7이네요.
실제로 5입니다. 이부분에서 MBSC에서는 문제가 생기게 됩니다.
WBCS 기반의 프로그래밍
WBCS를 위한 2가지
1. char 를 대신하는 wchar_t (wide character 자료형)
2. "ABC" (ASCII Code)를 대신하는 L"ABC" (UNICODE) // L :: 뒤에 오는 문자열을 UNICODE로..
ex) wchar_t str[] = L"ABC"; // char str[] = "ABC";
그리고 Wide character에는 strlen으로 길이를 젤 수 없습니다.
읽어가는 문자 자료형이 다르기 때문에, WBCS 기반의 문자열 조작 함수를 사용해야합니다.
하지만 이렇게 MBCS, WBCS 등 나눠서
함수를 쓰게되면 이걸 계속 참조하여 쓰기는 힘들게 되겠죠.
일반적으로 쓰는 ASCII CODE와 UNICODE를
지원하게 하는 방법이 있습니다.
이 내용은 다음글에서 봅시다.
참고도서 : 윈도우즈 시스템 프로그래밍 | 윤성우 저 | 한빛미디어