windows平台编码转换

时间:2025-05-15 15:37:14
int AsciiToUtf8(char* pSrc, unsigned int nSrcLen, char* pBuffer, unsigned int nBufferLen)
{
assert(pSrc != NULL); int nRet(0);
int nUtf16Len = MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLen, NULL, 0);
if(nUtf16Len > 0)
{
wchar_t* pW = new wchar_t[nUtf16Len];
if(pW != NULL)
{
nUtf16Len = MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLen, pW, nUtf16Len); if(pBuffer == NULL || nBufferLen <= 0)
{
nRet = WideCharToMultiByte(CP_UTF8, 0, pW, nUtf16Len, NULL, 0, NULL, NULL);
}
else
{
nRet = WideCharToMultiByte(CP_UTF8, 0, pW, nUtf16Len, pBuffer, nBufferLen, NULL, NULL);
} delete []pW;
pW = NULL;
}
} return nRet;
}