ANSI 문자열을 UTF8로 인코딩 하는 방법

ansi 문자열을 UTF8로 인코딩하는 방법

 

 전반적인 방법을 설명하자면 ANSI문자열을 유니코드 문자열로 변환 후 UTF8로 변경을 합니다

ANSI -> UTF8 로 바로 변환 시켜주는 함수는 윈도우에서 제공해주지 않고 따로 구현을 해줘야 됩니다.

저와 같은 경우는 Windows API를 통한 방법으로 설명을 하겠습니다.

 

 

 

1. ANSI -> 유니코드 로 변환하기 전에 유니코드로 변환했을때의 문자열 길이를 얻어옵니다.

int nWLen = MultiByteToWideChar(CP_ACP, 0, data, strlen(data), NULL, NULL); // 변환되었을때 문자열의 길이를 미리 구할 수 있다.

 

 

2. 유니코드 문자열의 길이를 얻어왔으면 유니코드 문자열을 담을수 있는 저장공간 확보후 변환을 한다.

wchar_t* dst_data = new wchar_t[nWLen + 1]; // 저장 공간 확보

ZeroMemory(dst_data, (nWLen + 1) * 2); // 초기와
MultiByteToWideChar(CP_ACP, NULL, data, file.GetLength(), dst_data, sizeof(wchar_t)*nWLen); // 변환

 

 

3. 유니코드 -> UTF8로 변환했을때의 크기를 미리 얻어 온다.

int nLen = WideCharToMultiByte(CP_UTF8, 0, dst_data, lstrlenW(dst_data), NULL, NULL, NULL,NULL);

 

 

 

4. UTF8의 길이를 미리 얻어왔으면 저장공간 확보후 변환을 한다.
data = new char[nLen+1];
ZeroMemory(data, nLen + 1);
WideCharToMultiByte(CP_UTF8, 0, dst_data, sizeof(wchar_t)*nWLen, data, nLen, NULL,NULL);

 

 

5. 메모리 해제는 필수.

 

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by Cr8or | 2011/04/19 10:47 | Programming | 트랙백 | 덧글(0)
트랙백 주소 : http://cr8or.egloos.com/tb/4024242
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >