//Unicode转Utf8 // char* UnicodeToUtf8(const WCHAR *pUnicode) { int nByte = WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, 0, 0, 0, 0); char* pUtf8 = new char[nByte + 1]; if( NULL == pUtf8 ) { return NULL; } nByte = WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, pUtf8, nByte, 0, 0); if( 0 == nByte ) { delete [] pUtf8; pUtf8 = NULL; } return pUtf8; } //Utf8转Unicode // WCHAR *Utf8ToUnicode(const char *pUtf8) { int nByte(0); WCHAR *pUnicode(NULL); nByte = MultiByteToWideChar(CP_UTF8, 0, pUtf8, -1, NULL, 0); pUnicode = new WCHAR[nByte + 1]; if( NULL == pUnicode ) { return NULL; } nByte = MultiByteToWideChar(CP_UTF8, 0, pUtf8, -1, pUnicode, nByte); if( 0 == nByte ) { delete [] pUnicode; pUnicode = NULL; } return pUnicode; } //Unicode转Mbcs // char *UnicodeToMbcs(const WCHAR *pUnicode) { int nByte(0); char *pMbcs(NULL); int nCodePage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; nByte = WideCharToMultiByte(nCodePage, 0, pUnicode, -1, 0, 0, 0, 0); pMbcs = new char[nByte + 1]; if( NULL == pMbcs ) { return NULL; } nByte = WideCharToMultiByte(nCodePage, 0, pUnicode, -1, pMbcs, nByte,0, 0); if( 0 == nByte ) { delete [] pMbcs; pMbcs = NULL; } return pMbcs; } //Mbcs转Unicode // WCHAR *MbcsToUnicode(const char *pMbcs) { int nByte(0); WCHAR *pUnicode(NULL); int nCodePage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; nByte = MultiByteToWideChar(nCodePage, 0, pMbcs, -1, NULL,0); pUnicode = new WCHAR[nByte + 1]; if( NULL == pUnicode ) { return NULL; } nByte = MultiByteToWideChar(nCodePage, 0, pMbcs, -1, pUnicode, nByte); if( 0 == nByte ) { delete [] pUnicode; pUnicode = NULL; } return pUnicode; } //Utf8转Mbcs // char *Utf8ToMbcs(const char *pUtf8) { char *pMbcs(NULL); WCHAR *pUnicode(NULL); pUnicode = Utf8ToUnicode(pUtf8); if( NULL == pUnicode ) { return NULL; } pMbcs = UnicodeToMbcs(pUnicode); delete [] pUnicode; return pMbcs; } //Mbcs转Utf8 // char *MbcsToUtf8(const char *pMbcs) { char *pUtf8(NULL); WCHAR *pUnicode(NULL); pUnicode = MbcsToUnicode(pMbcs); if( NULL == pUnicode ) { return NULL; } pUtf8 = UnicodeToUtf8(pUnicode); delete [] pUnicode; return pUtf8; }