适用范围:MFC。
字符集:多字节字符集。
CString UTF8AndUnicode_Convert(CString &strSource, UINT nSourceCodePage, UINT nTargetCodePage);
CString UTF8AndUnicode_Convert(CString &strSource, UINT nSourceCodePage, UINT nTargetCodePage){ CString strTarget; wchar_t *pWideBuf; int nWideBufLen; char *pMultiBuf; int nMiltiBufLen; int nSourceLen; nSourceLen = strSource.GetLength(); nWideBufLen = MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, NULL, 0); pWideBuf = new wchar_t[nWideBufLen+1]; memset(pWideBuf, 0, (nWideBufLen + 1) * sizeof(wchar_t)); MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, (LPWSTR)pWideBuf, nWideBufLen); pMultiBuf = NULL; nMiltiBufLen = WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, 0, NULL, NULL); pMultiBuf = new char[nMiltiBufLen+1]; memset(pMultiBuf, 0, nMiltiBufLen + 1); WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, nMiltiBufLen, NULL, NULL); strTarget.Format(_T("%s"), pMultiBuf); delete pWideBuf; delete pMultiBuf; return strTarget; }
UTF-8转Unicode
m_strUnicode = UTF8AndUnicode_Convert(m_strUTF8, CP_UTF8, CP_ACP);
Unicode转UTF-8
m_strUTF8 = UTF8AndUnicode_Convert(m_strUnicode, CP_ACP, CP_UTF8);
联系客服