2009/10/13 22:32

UTF-8 to ANSI in C++ [開發] 프로젝트 관련

UTF-8 -> ANSI String 변환

 

char* UTF8ToANSI(char *pszCode)
{
    BSTR    bstrWide;
    char*   pszAnsi;
    int     nLength;
 

    // bstrWide 배열 생성 Lenth를 읽어 온다.
    nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, NULL, NULL);

    // bstrWide 메모리 설정

    bstrWide = SysAllocStringLen(NULL, nLength);
 
    MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, bstrWide, nLength);
 

    // char 배열 생성전 Lenth를 읽어 온다.
    nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL);

    // pszAnsi 배열 생성
   
pszAnsi = new char[nLength];

    // char 변환
    WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL);
 

    // bstrWide 메모리 해제
    SysFreeString(bstrWide);
 
    return pszAnsi;
}

 

ANSI String -> UTF-8 변환

int ANSIToUTF8(char *pszCode, char *UTF8code)
{
 WCHAR Unicode[100]={0,};
 char utf8[100]={0,};

 

 // char Lenth 읽어 오기

 int nUnicodeSize = MultiByteToWideChar(CP_ACP, 0, pszCode, strlen(pszCode), Unicode, sizeof(Unicode));
 // UTF-8 Lenth 읽어 오기
 int nUTF8codeSize = WideCharToMultiByte(CP_UTF8, 0, Unicode, nUnicodeSize, UTF8code, sizeof(Unicode), NULL, NULL);
 // UTF-8 변환
 MultiByteToWideChar(CP_UTF8, 0, utf8, nUTF8codeSize, Unicode, sizeof(Unicode));

 

 return nUTF8codeSize;
}


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://batsu05.egloos.com/tb/2456315 [도움말]

덧글

덧글 입력 영역



영어단어

블로그 스티커 - B형