我需要实现一个从网页抓取一段文字插入HTML文件的功能,利用CHtmlEditView显示HTML文件,利用COleDropTarget实现抓取文字的插入,以下是我重写的COleDropTarget:OnDrop代码:
BOOL COleEditDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point )
{
    if (pDataObject->IsDataAvailable(CF_TEXT))
   {
CFile*      pFile; 
CString     szReceive; pFile = pDataObject->GetFileData(CF_TEXT);
if (NULL == pFile)
{
    return FALSE;
} CArchive ar(pFile, CArchive::load);
        ar.ReadString(szReceive); ar.Close();
        delete pFile;
     
        插入代码略
    }
    return TRUE;
}    
可每次从pDataObject中读出的字符串都是一串类似韩文的古怪乱码,无论是用pDataObject->GetGlobalData()还是pDataObject->GetData()结果都一样,这究竟是什么原因?求各位高手解答,不胜感激!
    

解决方案 »

  1.   

    会不会是编码格式引起的。UNICODE,UTF编码格式可能需要关注一下
      

  2.   

    是不是编码的问题,网页的是UTF8编码?VC里是ANSI
      

  3.   

    是VC2005,项目字符集为UNICODE,但如果改成多字节符集的话整个项目的风格都变了,功能也会出问题,不知为什么。
    所以现在还是只能用UNICODE,如果是要改变抓取文字的编码的话,又不知道应该怎么改。
      

  4.   

    有些编码,UNICODE也不能解析好像,似乎要UTF8更加全面一点
      

  5.   

    将抓到的字符进行编码转换啊,如果网页是utf8的,则进行utf8->unicode,具体怎么转查msdn
      

  6.   

    应该怎么查来着?MSDN用不熟,目前只会按F1...
      

  7.   

    1 //UTF-8格式的字符串
        2 const char* utf8 = "你";
        3 wchar_t unicode;
        4 unicode = (utf8[0] & 0x1F) << 12;
        5 unicode |= (utf8[1] & 0x3F) << 6;
        6 unicode |= (utf8[2] & 0x3F);
        7 //unicode is ok!
    ......
    详见http://hi.baidu.com/dustin_xiao/blog/item/2ab75b24c27ca32ed507426f.html
      

  8.   

    void ConvertUTF8ToANSI(char* strUtf8, char* strAnsi)

    int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0); 
    unsigned short * wszAnsi = new unsigned short[len+1]; 
    memset(wszAnsi, 0, len * 2 + 2); 
    MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszAnsi, len); 
    len = WideCharToMultiByte(CP_ACP, 0, wszAnsi, -1, NULL, 0, NULL, NULL); 
    WideCharToMultiByte (CP_ACP, 0, wszAnsi, -1, strAnsi, len, NULL,NULL);  delete[] wszAnsi; 
      

  9.   

    请问下有没有什么通用的方法?所有格式都可以转成UNICODE的?
      

  10.   

    EVERNOTE抓取的时候,仅仅是一段文字就可以找出文件的信息,类似的方法MFC中有吗?以上三个问题,只要有一个有答案就行了,拜托拜托
      

  11.   

    CF_UNICODETEXT
    pFile = pDataObject->GetFileData(CF_UNICODETEXT);