본문 바로가기
IT-개발,DB

[VC++] VC++ 문자 Encoding 방식

by SB리치퍼슨 2010. 9. 30.

싱글바이트캐릭터
SBCS (Single-byte character set)
한 문자 표현에 1Byte를 사용하는 방식이다.
예로 ASCII 코드가 있으며, 한글이나 일본어표현은 불가능하다.


멀티바이트캐릭터
MBCS (Multi-byte character set)
한 문자 표현에 1Byte 이상을 사용하는 방식으로 Windows에서 MBCS에는 딱 두종류가 있다.
SBCS와 DBCS( Double-byte character set) 결국 많아봐야 최대 2Byte라는 얘기다.
한글이나 일본어가 처리되는 기본 방식이다.
즉,

printf( “안녕하삼” );
std::cout<<”배고프네”;
 

  이렇게 코드를 작성하고 컴파일해서 실행했을 때, 이게 바로 MBCS를 사용한 것이 된다.

유니코드
Unicode (wide characters)
유니코드는 모든캐릭터들을 2Byte로 표현하는 표준 Encoding 방식이다.
즉 구조적으로 한 글자가 1Byte, 2Byte, 3Byte 어느것이든 가능한 MBSC와 구분된다.


> C++에서 종료 문자열
SBCS/MBCS
코드상 별도의 구분없이 사용하므로, 기본 C-Style 문자열에서 처럼 ‘\0’ 한번
즉, 0Byte 값이 문자열의 끝을 표현.

Unicode
모든 캐릭터를 2Byte로 Encoding 하므로, 종료 문자열도 ‘\0’이 두번 위치.
즉, 0Byte 2개가 문자열의 끝을 표현.



> Data type
SBCS/MBCS
char : 일반적인 1Byte 문자형 char를 사용해서 표현

Unicode
wchar_t : wide-character 타입 문자형을 사용하며, 값 지정시 prefix L 을 사용한다.
wchar_t wch = L’즐’; //2Bytes
wchar_t* wstr = L”Hi”; // 6Bytes



> 문자열 처리 함수
SBCS
strcpy(), sprintf(), atol()등의 함수

MBCS
_mbscpy()처럼 _mbsXXX()식으로 이름이 붙은 mbcs전용 함수를 사용해야 한다.

Unicode
wcsXXX()식의 함수나 swprintf(), _wtol()처럼 앞에 w등이 붙은 unicode전용 함수를 사용해야 한다.
반응형

댓글