|
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); // 초기와
3. 유니코드 -> UTF8로 변환했을때의 크기를 미리 얻어 온다. int nLen = WideCharToMultiByte(CP_UTF8, 0, dst_data, lstrlenW(dst_data), NULL, NULL, NULL,NULL);
4. UTF8의 길이를 미리 얻어왔으면 저장공간 확보후 변환을 한다.
5. 메모리 해제는 필수.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
|
||||