이거 할때마다 인터넷 검색하는거 귀찮아서 여기 기록해놓음
Ansi를 UTF-8로 변환
char* ANSIToUTF8(const char * pszCode){ int nLength, nLength2; BSTR bstrCode; char* pszUTFCode = NULL; nLength = MultiByteToWideChar(CP_ACP, 0, pszCode, lstrlen(pszCode), NULL, NULL); bstrCode = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_ACP, 0, pszCode, lstrlen(pszCode), bstrCode, nLength); nLength2 = WideCharToMultiByte(CP_UTF8, 0, bstrCode, -1, pszUTFCode, 0, NULL, NULL); pszUTFCode = (char*)malloc(nLength2+1); WideCharToMultiByte(CP_UTF8, 0, bstrCode, -1, pszUTFCode, nLength2, NULL, NULL); SysFreeString(bstrWide); return pszUTFCode; }
UTF-8을 ANSI로 변환
char* UTF8ToANSI(const char *pszCode){ BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); return pszAnsi; }
Linsoo
의 저작물인 이 저작물은(는)
크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스
에 따라 이용할 수 있습니다.
ㅠㅠ진짜감사합니다…이틀내내 해메고 힘들었는데…이거한번에해결됬어요…
네…
위 함수 SysFreeString 빠졌네요. 메모리 누수..
아 그러네요. 수정했습니다.
c로 컴파일하니 안되는데 어떻게할까요,,
글쎄요…
어이쿠 감사합니다~
넵
예전 글이지만 감사합니다~
넵~