環(huán)境
適用范圍:MFC。
字符集:多字節(jié)字符集。
聲明
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;
}
調(diào)用方法
UTF-8轉(zhuǎn)Unicode
m_strUnicode = UTF8AndUnicode_Convert(m_strUTF8, CP_UTF8, CP_ACP);
Unicode轉(zhuǎn)UTF-8
m_strUTF8 = UTF8AndUnicode_Convert(m_strUnicode, CP_ACP, CP_UTF8);
|