环境为VC9,通过CHttpFile->ReadString读取HTML代码后,发现乱码,搜了很多帖子都说是要转成unicode,但是一直没有成功。如果将工程设置的字符集改成未设置或者多字节,就不会有乱码,但是可执行程序的外观就会与VC6的效果一样,没有VS版本生成的好看。另外,我的目的是想将HTML中的某个字段,如FileID附近的文本提取出来。这个网站的页面都是UTF-8编码。希望得到详细的解释,谢谢

解决方案 »

  1.   

    工程设为多字节,获取网页数据后,将UTF-8转为多字节的ANSI。
    UNICODE的程序获取UTF-8的网页后,会有乱码的,除非网页的文件当初保存为UTF-8编码。
      

  2.   

    网上找的,将UTF-8转为GBK。
    你的项目如果是非UNICODE,获取UTF-8的网页后,这样转一下就可以了。void ConvertUtf8ToGBK(CString& strUtf8)
    {
        int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
        unsigned short * wszGBK = new unsigned short[len+1];
        memset(wszGBK, 0, len * 2 + 2);
        MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, (LPWSTR)wszGBK, len);    len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, NULL, 0, NULL, NULL); 
        char *szGBK=new char[len + 1];
        memset(szGBK, 0, len + 1);
        WideCharToMultiByte (CP_ACP, 0, (LPCWSTR)wszGBK, -1, szGBK, len, NULL,NULL);    strUtf8 = szGBK;
        delete[] szGBK;
        delete[] wszGBK;
    }