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.
我怎么做能把数据正确读取出来?
展开
 我来答
xu19951930
推荐于2016-11-07 · TA获得超过294个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:165万
展开全部
//////////////////////////////////////////////////////////////////////////
/*
*函数名称: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;
}

 上面的函数,你试试看,应该是可以的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式