본문 바로가기
C & C++/C & C++

유니코드 <--> 멀티 바이트 변환

by izen8 2011. 10. 25.
반응형

// 유니코드 -> 멀티바이트
errno_t wcstombs_s
(
   size_t
*pReturnValue,
   
char *mbstr,
   size_t sizeInBytes
,
   
const wchar_t *wcstr,
   size_t count
);
// 멀티바이트 -> 유니코드
errno_t mbstowcs_s
(
   size_t
*pReturnValue,
   wchar_t
*wcstr,
   size_t sizeInWords
,
   
const char *mbstr,
   size_t count
);

//예제 코드
size_t convertSize
= 0;
wcstombs_s
(&convertSize, mbsFileName, wcslen(strFilePath) + 1, strFilePath, MAX_PATH );

/// 위 방법은 한글변환 불가 -> 아래방법 사용
int len = strFilePath.GetLength();  
char* mbsFileName = new char[len];
// 멀티바이트 길이를 구한다.
int nMultiByteLen = WideCharToMultiByte(CP_ACP, 0, strFilePath, -1, NULL, 0, NULL, NULL);
// 멀티바이트 길이만큼 변환한다.
WideCharToMultiByte(CP_ACP, 0, strFilePath, -1, mbsFileName, nMultiByteLen, NULL, NULL);
반응형

댓글