/***************************************************
函数功能: UTF8转换为宽字符
输入: szUTF8 UTF8字符串
输出: szUnicode 宽字符类型字符串
返回值: 字符串转换为宽字符后,字符的个数
***************************************************/
DWORD UTF8toUNICODE(const char *szUTF8, wchar_t *szUnicode)
{
DWORD dwMinSize = MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, NULL, 0);
wchar_t *pWchar = new wchar_t[dwMinSize];
MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, pWchar , dwMinSize);
wcsncpy(szUnicode, pWchar, dwMinSize);
*(szUnicode + dwMinSize) = L'\0';
delete [] pWchar;
return dwMinSize;
}
/***************************************************
函数功能: 宽字符转换为UTF8
输入: szUnicode 宽字符类型字符串
输出: szUTF8 UTF8字符串
返回值: 字符串转换为UTF8后,占用的字节数
***************************************************/
DWORD UNICODEtoUTF8(const wchar_t *szUnicode, char *szUTF8)
{
DWORD dwNum = WideCharToMultiByte(CP_UTF8, NULL, szUnicode, -1, NULL, 0, NULL, FALSE);
char* pChar = new char[dwNum];
WideCharToMultiByte(CP_UTF8, NULL, szUnicode, -1, pChar, dwNum, NULL, FALSE);
strncpy(szUTF8, pChar, dwNum);
*(szUTF8 + dwNum) = '\0';
delete [] pChar;
return dwNum;
}