1. 程式人生 > >MFC中UTF8與GB2312互轉

MFC中UTF8與GB2312互轉

 UTF8轉GB2312

CString CMyBrowserDlg::ConvertUTF8toGB2312(CString str)
{
    int len = str.GetLength();
    int n = MultiByteToWideChar(CP_UTF8, 0, str, len, NULL, 0);
    WCHAR *pChar = new WCHAR[n+1];
    n = MultiByteToWideChar(CP_UTF8, 0, str, len, pChar, len);
    pChar[n] = 0;
    n = WideCharToMultiByte(936, 0, pChar, -1, 0, 0, 0, 0);
    char* p = new char[n+1];
    n = WideCharToMultiByte(936, 0, pChar, -1, p, n, 0, 0);
    CString resText(p);
    delete[] pChar;
    delete[] p;
    return resText;
}

  GB2312轉UTF8

CString ConvertGB2312ToUtf8(CString strGBK) 
{
    CString resText; 
    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
    unsigned short * wszUtf8 = new unsigned short[len+1];
    memset(wszUtf8, 0, len * 2 + 2);
    MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);
	
    len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL); 
    char *szUtf8=new char[len + 1];
    memset(szUtf8, 0, len + 1);
    WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL);
    resText= szUtf8;
    delete[] szUtf8;
    delete[] wszUtf8;
    return resText;
}