您的位置:首页 > 其它

Unicode和ansi及Utf-8转换

2013-11-25 23:40 381 查看
CString AnsiToUnicode(const char* pszAnsi)
{
if (strlen(pszAnsi) == 0)
return _T("");

CString strUnicode = _T("");
try
{
int len = ::MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, NULL, 0);

if (len != 0)
{
wchar_t* szTemp = new wchar_t[len];

::MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, szTemp, len);
strUnicode = szTemp;

delete[] szTemp;
szTemp = NULL;
}
}
catch(...)
{

}
return strUnicode;
}

std::string UnicodeToAnsi(const wchar_t* pwszUnicode)
{
if (wcslen(pwszUnicode) == 0)
return "";

std::string szAnsi = "";
try
{
int len = ::WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, NULL, 0, NULL, NULL);

if (len != 0)
{
char* szTemp = new char[len];

::WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, szTemp, len, NULL, NULL);
szAnsi = szTemp;

delete[] szTemp;
szTemp = NULL;
}
}
catch(...)
{

}
return szAnsi;
}

CString Utf8ToUnicode(const char* pszUtf8)
{
if (strlen(pszUtf8) == 0)
return _T("");

CString strUnicode = _T("");
try
{
int len = ::MultiByteToWideChar(CP_UTF8, 0, pszUtf8, -1, NULL, 0);

if (len != 0)
{
wchar_t* szTemp = new wchar_t[len];

::MultiByteToWideChar(CP_UTF8, 0, pszUtf8, -1, szTemp, len);
strUnicode = szTemp;

delete[] szTemp;
szTemp = NULL;
}
}
catch(...)
{

}
return strUnicode;
}

std::string UnicodeToUtf8(const wchar_t* pwszUnicode)
{
if (wcslen(pwszUnicode) == 0)
return "";

std::string szUtf8 = "";
try
{
int len = ::WideCharToMultiByte(CP_UTF8, 0, pwszUnicode, -1, NULL, 0, NULL, NULL);

if (len != 0)
{
char* szTemp = new char[len];

::WideCharToMultiByte(CP_UTF8, 0, pwszUnicode, -1, szTemp, len, NULL, NULL);
szUtf8 = szTemp;

delete[] szTemp;
szTemp = NULL;
}
}
catch(...)
{

}
return szUtf8;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  utf-8 unicode