댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
MFC
2006.04.14 11:03
API를 이용하는 유니코드와 ANSI 문자열간의 변환 방법
조회 수 65167 댓글 0
API를 이용하는 유니코드와 ANSI 문자열간의 변환 방법
API를 이용해서 유니코드와 ANSI 문자열간의 변환은 어떻게 수행합니까 ? Visual C++에서 유니코드 문자열은 BSTR이란 타입으로 표시됩니다. 또 유니코드와 ANSI 문자열간의 변환을 위해서 윈도우 시스템에는 MultiByteToWideChar와 WideCharToMultiByte라는 API가 존재합니다. MFC에서의 BSTR 타입 변환방법이나 ATL로 하는 BSTR 타입 변환도 참고하시기 바랍니다.
// 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); // 필요없어지면 제거한다. SysFreeString(bstr); // newVal이란 BSTR 타입에 있는 유니코드 문자열을 sTime이라는 ANSI 문자열로 변환 char *sTime; int nLen = WideCharToMultiByte(CP_ACP, 0, newVal, -1, sTime, 0, NULL, NULL); sTime = malloc(nLen+1); WideCharToMultiByte(CP_ACP, 0, newVal, -1, sTime, 128, NULL, NULL); // 필요없으면 메모리를 제거한다. free(sTime); WideCharToMultiByte 함수를 호출할 때 첫 번째 인자로 CP_UTF8을 지정하면 된다. UTF-8은 유니코드의 인코딩 스킴 중의 하나로 쉽게 말하자면 문자열 스트림에서 0을 빼고 표현하는 방법이라고 볼 수 있다 Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5