` `

{
	wchar_t *pStr;
	int len = MultiByteToWideChar(CP_ACP, 0, AC, (int)strlen(AC), NULL, 0);
	pStr = new wchar_t[len + 1];
	MultiByteToWideChar(CP_ACP, 0, AC, (int)strlen(AC), pStr, len);
	pStr[len] = '\0';
	wstr = wstring(pStr);
	delete pStr;
}
void CSQLite::Wchar_t2string(const wchar_t* WC, string& str)
{
	char *pStr;
	int len = WideCharToMultiByte(CP_ACP, 0, WC, (int)wcslen(WC), NULL, 0, NULL, NULL);
	pStr = new char[len + 1];
	WideCharToMultiByte(CP_ACP, 0, WC, (int)wcslen(WC), pStr, len, NULL, NULL);
	pStr[len] = '\0';
	str = string(pStr);
	delete pStr;
}
void CSQLite::UnicodeToUTF8(wstring &wstr, string &str)
{
	int len;
	len = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
	char *szUtf8 = (char*)malloc(len + 1);
	memset(szUtf8, 0, len + 1);
	WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, szUtf8, len, NULL, NULL);
	str = string(szUtf8);
	delete[] szUtf8;
}
void CSQLite::UTF8ToUnicode(string &str, wstring &wstr)
{
	int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, str.c_str(), strlen(str.c_str()), NULL, 0);
	wchar_t* wszString = new wchar_t[wcsLen + 1];
	::MultiByteToWideChar(CP_UTF8, NULL, str.c_str(), strlen(str.c_str()), wszString, wcsLen);
	wszString[wcsLen] = '\0';
	wstr = wstring(wszString);
	delete[] wszString;
}
Copy the code