1. 멀티 바이트를 유니코드(Wide Char)로 변환

 

// MBCS을 와이트 케릭터(UTF-8)으로  변경한다.
STDAPI_(WCHAR*) gf_ConvertWBCS(char* mbcs, ULONG size);

 

STDAPI_(WCHAR*) gf_ConvertWBCS(char* mbcs, ULONG size)

{

           long lSize=MultiByteToWideChar( CP_UTF8, 0, (LPSTR)mbcs, -1, NULL, 0);

           LPTSTR lpBuffer = (LPTSTR)new WCHAR[size + 1];

           wmemset(lpBuffer, 0, size + 1);

           MultiByteToWideChar(CP_UTF8, 0, (LPSTR)mbcs, -1, lpBuffer, size);

           return lpBuffer; 

}

 

char* mbcs = NULL;
WCHAR* wbcs = NULL;

mbcs = (char*)malloc(length+1);  
ZeroMemory(mbcs, length+1);

sprintf(mbcs, "%.*s", length, (char*)xml3);
wbcs = gf_ConvertWBCS(mbcs, length); 


if( wbcs != NULL)
{
    free(wbcs);
}

 

2.유니코드를 멀티바이트로 변환

 

// 와이드 문자열을 멀티바이트로 변환한다.
STDAPI_(char*) gf_ConvertMBWS(WCHAR* wbcs, ULONG type);

 

STDAPI_(char*) gf_ConvertMBWS(WCHAR* wbcs, ULONG type )

{

           //유니코드에서 멀티바이트로 변환 방법

   // newVal이란 BSTR 타입에 있는 유니코드 문자열을 sTime이라는 ANSI 문자열로 변환        

           char* pTemp = NULL;

           int iLen = ::WideCharToMultiByte(type, 0, wbcs, -1, pTemp, 0, NULL, NULL);

           pTemp = new char[iLen+1];

           memset(pTemp, 0, iLen+1);         

           ::WideCharToMultiByte(type, 0, wbcs, -1, pTemp, iLen, NULL, NULL);

           return pTemp;  

}

 

WCHAR pszStr1[MAX_PATH_EX] = {0};

 StringCchCopy(pszStr1, MAX_PATH_EX, str1);

 

char* pStr1 =gf_ConvertMBWS(pszStr1, CP_ACP);

if(pStr1!=NULL) delete pStr1;