我通过这种方式读入HTML代码
CHttpFile* file = con->OpenRequest(CHttpConnection::HTTP_VERB_GET, "");
file->SendRequest();
while(file->ReadString(tmpStr))
{
htmlCode += tmpStr;
}
读入后发现非GB2312编码的页面中文显示乱码,WideCharToMultiByte可以进行编码转换,但它需要个WCHAR指针参数,【问题1】我不知道如何把CString转换为WCHAR的。
我想也可以用file->Read(..)读取数据到WCHAR型的数组里,然后转换【问题2】但我不知道一次读取多少合适,是读一段转换一段还是全部读取再转换,如果分段读取如何把它们连接到一起?
CHttpFile* file = con->OpenRequest(CHttpConnection::HTTP_VERB_GET, "");
file->SendRequest();
while(file->ReadString(tmpStr))
{
htmlCode += tmpStr;
}
读入后发现非GB2312编码的页面中文显示乱码,WideCharToMultiByte可以进行编码转换,但它需要个WCHAR指针参数,【问题1】我不知道如何把CString转换为WCHAR的。
我想也可以用file->Read(..)读取数据到WCHAR型的数组里,然后转换【问题2】但我不知道一次读取多少合适,是读一段转换一段还是全部读取再转换,如果分段读取如何把它们连接到一起?
CFile file;
file.Open(filePath,CFile::modeRead);
file.Seek(8,CFile::begin);
file.Read(name,100);
file.Close();int size=0;
//获得转换后wchar_t的长度
size = MultiByteToWideChar (CP_UTF8, 0, name, -1, NULL, 0);
//按该长度new一个wchar_t数组
wchar_t* wText = new wchar_t[size];
//转换
MultiByteToWideChar (CP_UTF8, 0, name, -1, wText, size);//以下同理size = WideCharToMultiByte(CP_ACP,NULL,wText,-1,NULL,0,NULL,FALSE);
char* ansiName = new char[size];
WideCharToMultiByte(CP_ACP,NULL,wText,-1,ansiName,size,NULL,FALSE);CString strName(ansiName); //所求字符串
但你应该看的明白,仿照一下吧,主要思想是想获得转换后wchar_t的长度
再分配空间,你可以查一下MSDN,里面有很详细的说明
MultiByteToWideChar的用法我是会的
但这没有解决我的问题,现在获取的数据应该就是WideChar的,但我是存储到CString里了,
如何能取出来放到WCHAR*里呢?