16,471
社区成员
发帖
与我相关
我的任务
分享
CString str(L"0123456789");
int len;
len = WideCharToMultiByte(CP_UTF8, 0, str.GetBuffer(str.GetLength()), -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 1];
memset(szUtf8, 0, len * 2 + 2);
WideCharToMultiByte (CP_UTF8, 0, str.GetBuffer(str.GetLength()), -1, szUtf8, len, NULL,NULL);
return szUtf8;
输出后,怎么源串中的第一位0 编程0x00了,而不是0x30呢?
/***********************************************************
** 功能描述: Unicode字符串转多字节
** 输入参数: const CString &szData Unicode字符串
char* pData 保存转换的多字节字符串
int& nDataLen 保存转换的多字节字符串长度
************************************************************/
void HandleCode::ConvertUnicodeToAscii(const CString &szData, char* pData, int& nDataLen)
{
int nDataLength;
nDataLength = WideCharToMultiByte(CP_ACP, 0, szData, -1 ,NULL, 0, NULL, FALSE);
WideCharToMultiByte(CP_ACP, 0, szData, -1, pData, nDataLength, NULL, 0);
pData[nDataLength - 1] = '\0';
nDataLen = nDataLength - 1;
}
USES_CONVERSION;
char *szUtf8 = T2A(str);