编码转换

来源:互联网 发布:ucosii官方源码下载 编辑:程序博客网 时间:2024/05/01 02:43
void Utf8ToUnicode(BYTE * pBuffer, WCHAR * & strDes)
{
int n = MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)pBuffer, -1, NULL, 0 );
strDes = new WCHAR[n];
::MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)pBuffer, -1, (LPWSTR)strDes, n);
}

void CWebScan::Utf8ToUnicode(const string& src, wstring& result)
{
int n = MultiByteToWideChar( CP_UTF8, 0, src.c_str(), -1, NULL, 0 );
result.resize(n);
::MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());
}
// Unicode编码转汉字
CString UnicodeToCHS(CString strText)
{
int nCount = strText.Replace(_T("\\u"), _T(" 0x"));
wchar_t* buf = new wchar_t[nCount+1];
memset(buf, 0, sizeof(wchar_t)*(nCount + 1));
int nIndex = 0;
TCHAR seps[] = _T(" ");
TCHAR* token = _tcstok(strText.GetBuffer(strText.GetLength()), seps);
while(NULL != token)
{
buf[nIndex++] = _tcstoul(token, NULL, 16);
token = _tcstok(NULL, seps);
}
strText.ReleaseBuffer();
CString strReturn = CString(buf);
delete[] buf;
buf = NULL;
return strReturn;
}
0 0