=========================================================
● API를 이용한 ASCII와 UNICODE의 변환방법
=========================================================
//////////////////////////////////////////////////
// 문자열을 유니코드 문자열(wide-character)로 매핑한다.
//
// 이 함수에 의해 매핑되는 문자열은 multibyte character set으로 부터 반드시 유래하는 건 아니다.
//////////////////////////////////////////////////
int MultiByteToWideChar (
UINT CodePage, // code page
DWORD dwFlags, // character-type options
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);
[in] 변환 수행에 사용될 code page를 기술한다.
이 파라메타는 설치되거나 또는 시스템에 유효한 어떤한 코드페이지가 될수 있다.
또는 아래에 기술된 값중 하나를 기술할 수 있다.
CP_ACP : ANSI 코드 페이지
CP_MACCP : Macintosh 코드 페이지
CP_OEMCP : OEB 코드 페이지
lpMultiByteStr :
[in] 변환 되어질 문자열 스트링 포인터
cbMultiByte
[in] lpMultiByteStr 파라메타에 의해 포인트된 문자열의 바이트 사이즈
lpWideCharStr
[out] 변환된 문자열을 수신할 버퍼 포인터
[in] wide character로, lpWideCharStr파라메타에 의해 포인트된 버퍼의 크기
만약 이값이 0이면, 이함수는 wide character로 요구되어진 buffer size를 반환한다,
그리고 lpWideCharStr 버퍼의 사용을 하지 않는다.
▷ASCII ==> UNICODE 변환방법
// sTime이란 ANSI 무낮열을 bstr이란 이름의 유니코드(BSTR타입) 변수로 변환
char sTime[] = '유니코드 변환 예제';
BSTR bstr;
// sTime을 유니코드로 변환하기에 앞서 먼저 그것의 유니코드에서의 길이를 알아야 한다.
int nLen = MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), NULL, NULL)
// 얻어낸 길이만큼 메모리를 할당한다.
bstr = SysAllocStringLen(NULL, nLen);
// 이제 변환을 수행한다.
MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), bstr, nLen);
▷UNICODE ==> ASCII 변환방법
// newVal이란 BSTR 타입에 있는 유니코드 문자열을 sTime이라는 ANSI 문자열로 변환
char sTime[128];
WideCharToMultiByte(CP_ACP, 0, newVal, -1, sTime, 127/*원래크기보다 1작게*/, NULL, NULL);
'프로그래머의 길 > C & C++' 카테고리의 다른 글
GetTextExtentPoint (0) | 2008.04.21 |
---|---|
SetPixel, MoveToEx, LineTo( 그래픽 출력 함수 ) (0) | 2008.04.21 |
CreateFont, CreateFontIndirect (0) | 2008.04.21 |
sscanf (0) | 2008.04.21 |
GetModuleFileName() 현재 실행 디렉토리 얻어오기 (0) | 2008.04.21 |