반응형
- SBCS(Single Byte Character Set)
1byte로 문자를 표시하는 것
- DBCS(Double Byte Character Set)
기존의 SBCS로는 다른 언어(일어, 한문 등..)을 표현하는데 한계가 있었습니다. 그래서 만들어 진 것이 바로 DBCS로 한글을 쉽게 쓸 수 있는 장점이 있지만 SBCS와 DBCS가 호환이 안되는 문제가 발생했습니다.
- MBCS(Multi Byte Charecter Set)
따라서 SBCS와 DBCS를 같이 쓰자는 개념의 MBCS가 출현했습니다. 대부분의 ASCII 코드상의 문자를 1byte로 표현하고 그 이외의 문자를 2byte로 표현합니다.
- WBCS(Wide Byte Charecter Set)
여러 byte를 써서 문자를 표현하는 것으로 MBCS 내부의 호환이 되지 않았기 때문에 출현했습니다.
대표적으로 유니코드를 들 수 있는데 모든 문자를 2byte로 표현합니다.
호환이 되지 않는다는 말에 잠시 덧붙이면,
윈도우즈 me 계열과 9x계열들은 MBCS를 사용했었습니다. 그러나 윈도우즈 2000 넘어가면서부터 WBCS를 사용하기 시작했습니다. 윈도우즈 2000 이상에서 MBCS도 사용할 수 있지만 9x계열이나 me계열에서는 WBCS를 사용할 수 없습니다. 따라서 프로그램과 운영체제간의 호환성을 위해 이를 맞춰 줄 필요가 있는 것입니다.
Visual studio 사용시 MBCS 방식 지원 방법으로 main을 사용하고 WBCS 방식 지원 방법으로 wmain을 사용합니다. 그리고 둘을 공통으로 사용하는 방식이 _tmain인데 이를 사용하기 위해서는 tchar.h를 인클루드해야 합니다.
다음은 tchar.h에서 MBCS와 WBCS를 동시에 지원하기 위한 함수를 적절히 매크로 해놓은 모습입니다.
그리고 위의 매크로를 사용하기 위한 간단한 테스트 코드입니다.
1byte로 문자를 표시하는 것
- DBCS(Double Byte Character Set)
기존의 SBCS로는 다른 언어(일어, 한문 등..)을 표현하는데 한계가 있었습니다. 그래서 만들어 진 것이 바로 DBCS로 한글을 쉽게 쓸 수 있는 장점이 있지만 SBCS와 DBCS가 호환이 안되는 문제가 발생했습니다.
- MBCS(Multi Byte Charecter Set)
따라서 SBCS와 DBCS를 같이 쓰자는 개념의 MBCS가 출현했습니다. 대부분의 ASCII 코드상의 문자를 1byte로 표현하고 그 이외의 문자를 2byte로 표현합니다.
- WBCS(Wide Byte Charecter Set)
여러 byte를 써서 문자를 표현하는 것으로 MBCS 내부의 호환이 되지 않았기 때문에 출현했습니다.
대표적으로 유니코드를 들 수 있는데 모든 문자를 2byte로 표현합니다.
호환이 되지 않는다는 말에 잠시 덧붙이면,
윈도우즈 me 계열과 9x계열들은 MBCS를 사용했었습니다. 그러나 윈도우즈 2000 넘어가면서부터 WBCS를 사용하기 시작했습니다. 윈도우즈 2000 이상에서 MBCS도 사용할 수 있지만 9x계열이나 me계열에서는 WBCS를 사용할 수 없습니다. 따라서 프로그램과 운영체제간의 호환성을 위해 이를 맞춰 줄 필요가 있는 것입니다.
Visual studio 사용시 MBCS 방식 지원 방법으로 main을 사용하고 WBCS 방식 지원 방법으로 wmain을 사용합니다. 그리고 둘을 공통으로 사용하는 방식이 _tmain인데 이를 사용하기 위해서는 tchar.h를 인클루드해야 합니다.
다음은 tchar.h에서 MBCS와 WBCS를 동시에 지원하기 위한 함수를 적절히 매크로 해놓은 모습입니다.
그리고 위의 매크로를 사용하기 위한 간단한 테스트 코드입니다.
#define UNICODE #define _UNICODE
#include<stdio.h> #include<tchar.h> #include<windows.h> int _tmain(int argc, TCHAR* argv[]) { LPTSTR str1 = _T("MBCS or WBCS 1"); TCHAR str2[] = _T("MBCS or WBCS 2"); TCHAR str3[100]; TCHAR str4[50]; LPCTSTR pStr = str1; _tprintf(_T("string size : %d \n"), sizeof(str2); _tprintf(_T("string length : %d \n"), _tcslen(pStr)); _fputts(_T("Input String 1 : "), stdout); _fscanf(_T("%s"), str3); _fputts(_T("Input String 2 : "), stdout); _tscanf(_T("%s"), str4); _tcscat(str3, str4); _tprintf(_T("String1 + String2 : %s \n"), str3); return 0; } |
반응형
'IT 기술' 카테고리의 다른 글
윈도우에서 특정 포트 죽이기 (0) | 2012.01.25 |
---|---|
Multibyte기반 프로그램을 Unicode기반으로 변경할 때 (0) | 2012.01.25 |
OpenGL 용어 및 함수 이것저것..(2) (0) | 2012.01.25 |
OpenGL 용어 및 함수 이것저것..(1) (0) | 2012.01.25 |
OpenGL(기초) (0) | 2012.01.25 |