MultiByteToWideChar -> 멀티바이트에서 unicode로
WideCharToMultiByte -> unicode에서 멀티바이트로
회사에서 멀티바이트와 유니코드를 건드리게 되었는데
위에 두 함수는 API에서 제공해주는 함수 입니다. MSDN에 있다는데 선천적으로 영어에 이질감을 느끼는 저는
네이버에서 찾았데요 ㅠ
여튼 이 두놈 때문에 겨우 해결 할 수 있을 것 같군요 아직 테스트는 안해 봤지만..
멀티바이트에서 유니코드 변환 방법
// 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);
유니코드에서 멀티바이트로 변환 방법
// newVal이란 BSTR 타입에 있는 유니코드 문자열을 sTime이라는 ANSI 문자열로 변환
char sTime[128];
WideCharToMultiByte(CP_ACP, 0, newVal, -1, sTime, 128, NULL, NULL);
[출처] MultiByteToWideChar // WideCharToMultiByte|작성자 은이
int MultiByteToWideChar (UINT CodePage,
DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte,
LPWSTR lpWideCharStr, int cchWideChar)
1. CodePage - 변환할 코드 페이지
(보통 CP_ACP를 사용합니다. ANSI 코드 페이지를 사용하겠다는 거죠)
2. dwFlags - 어떤 캐릭터 형태로 변환할 것인지를 지정합니다.
(보통 MB_PRECOMPOSED 를 사용합니다. 완성형으로 변환을 하겠다는 거죠.)
3. lpMultiByteStr - 유니코드로 변환할 문자열의 포인터입니다.
4. cbMultiByte - 위의 문자열의 길이입니다.
5. lpWideCharStr - 변환된 문자열을 받아들일 유니코드형 문자열 버퍼의 포인터 입니다.
6. cchWideChar - 위의 문자열의 길이입니다.
그럼 간단한 예를 적어 드리면...
char szMuitiByte[255];
memset(szMultiByte, 0, 255);
strcpy(szMultibyte, "Test");
wchar_t wszBuffer[255];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szMulitByte, strlen(szMultiByte), wszBuffer, 255);
더 자세한 사항은 MSDN을 참고하세요.
추가> wchar_t로 된 스트링을 출력할때 MessageBoxW ( ) 함수 사용
ex>
MessageBoxW ( NULL, wszBuffer, L"TEST", MB_OK);
'IT' 카테고리의 다른 글
HTMLソースを見せないようにするには? (0) | 2021.07.07 |
---|---|
string을 2진수 문자열로 변환 (0) | 2021.07.07 |
Felix's Node.js Style Guide (0) | 2021.07.06 |
split() issues in node.js + express (0) | 2021.07.06 |
모던 웹을 위한 Node.js 프로그래밍 3판[1차] (0) | 2021.07.06 |
댓글