不同字符編碼轉換(UTF8 UNICODE ANSI)

UTF8 - ANSI

CP_UTF8
選項是UTF8和UNICODE之間的轉換

CP_ACP
是ANSI和UNICODE之間的轉換


先將UTF8轉換爲UNICODE

wstring UTF8ToUnicode(const string& str)
	{
		int  len = 0;
		len = str.length();
		int  unicodeLen = ::MultiByteToWideChar(CP_UTF8,
			0,
			str.c_str(),
			-1,
			NULL,
			0);
		wchar_t *  pUnicode;
		pUnicode = new  wchar_t[unicodeLen + 1];
		memset(pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t));
		::MultiByteToWideChar(CP_UTF8,
			0,
			str.c_str(),
			-1,
			(LPWSTR)pUnicode,
			unicodeLen);
		wstring  rt;
		rt = (wchar_t*)pUnicode;
		delete  pUnicode;

		return  rt;
	}
再將UNICODE轉換爲ANSI

string UnicodeToANSI(const wstring& str)
	{
		char*     pElementText;
		int    iTextLen;
		// wide char to multi char
		iTextLen = WideCharToMultiByte(CP_ACP,
			0,
			str.c_str(),
			-1,
			NULL,
			0,
			NULL,
			NULL);
		pElementText = new char[iTextLen + 1];
		memset((void*)pElementText, 0, sizeof(char) * (iTextLen + 1));
		::WideCharToMultiByte(CP_ACP,
			0,
			str.c_str(),
			-1,
			pElementText,
			iTextLen,
			NULL,
			NULL);
		string strText;
		strText = pElementText;
		delete[] pElementText;
		return strText;
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章