CString UTF8转Unicode
使用ReadString读取UTF8编码的网页时,CString参数的内存中数据正确,CString显示乱码。我想把CString转给char[],szBuf[i]=st...
使用ReadString读取UTF8编码的网页时,CString参数的内存中数据正确,CString显示乱码。
我想把CString转给char[],
szBuf[i] = strGetSentence.GetAt(i);
执行GetAt(i)时数据没有全部获得,例如内存中是1234,只得到了13.
我怎么做能把数据正确读取出来? 展开
我想把CString转给char[],
szBuf[i] = strGetSentence.GetAt(i);
执行GetAt(i)时数据没有全部获得,例如内存中是1234,只得到了13.
我怎么做能把数据正确读取出来? 展开
1个回答
展开全部
//////////////////////////////////////////////////////////////////////////
/*
*函数名称:ConvertToUnicode(CString& strUtf8)
*函数介绍:将指定字符串由UTF-8转换为GBK
*输入参数:待转换的UTF-8字符串
*输出参数:无
*返回值 :无
*/
void CMFCApplication2Dlg::ConvertToUnicode(CString& strUtf8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(LPCTSTR)strUtf8, -1, NULL, 0);
unsigned short * wszGBK = new unsigned short[len];
memset(wszGBK, 0, len * 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(LPCTSTR)strUtf8, -1, (LPWSTR)wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK = new char[len];
memset(szGBK, 0, len);
WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, szGBK, len, NULL, NULL);
strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
上面的函数,你试试看,应该是可以的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询