window下 ASCI Unicode utf8之間互相轉換。本站提示廣大學習愛好者:(window下 ASCI Unicode utf8之間互相轉換)文章只能為提供參考,不一定能成為您想要的結果。以下是window下 ASCI Unicode utf8之間互相轉換正文
//CString to string的轉能夠只適用於某些編碼狀況
string CStringToChar(const CString& strSrc)
{
CString strTmp(strSrc);
string str(strTmp.GetBuffer(strTmp.GetLength()));
strTmp.ReleaseBuffer();
return str;
}
wstring AnsiToUnicode(const string& buf)
{
int len = ::MultiByteToWideChar(CP_ACP, 0, buf.c_str(), -1, NULL, 0);
if (len == 0) return L"";
wstring strUnicode;
strUnicode.resize(len);
::MultiByteToWideChar(CP_ACP, 0, buf.c_str(), -1, (wchar_t*)strUnicode.c_str(), len);
return strUnicode;
}
string UnicodeToAnsi(const wstring& buf)
{
int len = ::WideCharToMultiByte(CP_ACP, 0, buf.c_str(), -1, NULL, 0, NULL, NULL);
if (len == 0) return "";
string strUtf8;
strUtf8.resize(len);
::WideCharToMultiByte(CP_ACP, 0, buf.c_str(), -1, (char*)strUtf8.c_str(), len, NULL, NULL);
return strUtf8;
}
wstring Utf8ToUnicode(const string& buf)
{
int len = ::MultiByteToWideChar(CP_UTF8, 0, buf.c_str(), -1, NULL, 0);
if (len == 0) return L"";
wstring strUnicode;
strUnicode.resize(len);
::MultiByteToWideChar(CP_UTF8, 0, buf.c_str(), -1, (wchar_t*)strUnicode.c_str(), len);
return strUnicode;
}
string UnicodeToUtf8(const wstring& buf)
{
int len = ::WideCharToMultiByte(CP_UTF8, 0, buf.c_str(), -1, NULL, 0, NULL, NULL);
if (len == 0) return "";
string strUtf8;
strUtf8.resize(len);
::WideCharToMultiByte(CP_UTF8, 0, buf.c_str(), -1, (char*)strUtf8.c_str(), len, NULL, NULL);
return strUtf8;
}
string AnsiToUtf8(const string& strSrc)
{
return UnicodeToUtf8(AnsiToUnicode(strSrc));
}
string AnsiToUtf8(const CString& strSrc)
{
return UnicodeToUtf8(AnsiToUnicode(CStringToChar(strSrc)));
}