3,882
社区成员




int TUnicodeToUtf8(LPCTSTR lpszSrc, char* szBuf, int nSize)
{
int nByte = 0;
#ifdef _UNICODE
nByte = WideCharToMultiByte(CP_UTF8, 0, lpszSrc, -1, NULL, 0, NULL, NULL);
if (nByte > nSize)
nByte = nSize;
return WideCharToMultiByte(CP_UTF8, 0, lpszSrc, -1, szBuf, nByte, NULL, NULL);
#else
//将ANSI字符串转成UNICODE
int nChar = MultiByteToWideChar(CP_ACP, 0, lpszSrc, -1, NULL, 0);
if (nChar==0)
return 0;
WCHAR* pwBuf = new WCHAR[nChar];
MultiByteToWideChar(CP_ACP, 0, lpszSrc, -1, pwBuf, nChar);
//将UNICODE转成UTF8
nByte = WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, 0, NULL, NULL);
if (nByte > nSize)
nByte = nSize;
int nResult = WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, szBuf, nByte, NULL, NULL);
delete[] pwBuf;
return nResult;
#endif
}