세상을 이롭게

string Unicode to multibyte/UTF-8 변환하기 본문

C,C++

string Unicode to multibyte/UTF-8 변환하기

2022. 7. 1. 10:49

멀티바이트 문자 집합 사용

가끔 멀티바이트 문자 집합을 사용하는 경우가 있다.(거의 한국어라면,,,)
실제로 "유니코드 문자 집합 사용"으로 테스트 후 실코드에 적용하려고 하니 에러가 났다.
영어만 사용할 수 있나 라고 생각해보았지만 그런게 어딧겠는가?  
이때 사용할 수 있는 것이 WideCharToMultiByte 함수이다.

본인은 https://github.com/troldal/OpenXLSX OpenXLSX
라이브러리를 사용함에 있어 한글데이터가 안들어가져 사용하였다

//example
string conv_uni2multi(const wchar_t strUni[256]) {
	char strUtf8[256] = { 0, };
	int nLen = WideCharToMultiByte(CP_UTF8, 0, strUni, lstrlenW(strUni), NULL, 0, NULL, NULL);
	WideCharToMultiByte(CP_UTF8, 0, strUni, lstrlenW(strUni), strUtf8, nLen, NULL, NULL);
	return strUtf8;
}

//...
XLDocument doc;
doc.create(path);
auto wks = doc.workbook().worksheet("Sheet1");
auto cell = wks.cell(1, 1);

wks.cell("A1").value() = conv_uni2multi(L"번호");
wks.cell("B1").value() = "MMSI";

//...
doc.save();
doc.close();


사용법은 L 을 붙여주어 const 임을 명시하여 사용한다.