本帖最后由 VisualEleven 于 2011-06-07 09:09:54 编辑

解决方案 »

  1.   

    是因为那个网站是UTF8编码的原因吗?
    该如何使得VC可以正确读出数据呢?
    修改VC的设置还是在代码中填一些什么?
    如果要填 该填一些什么呢?
    (好吧 我<del>无耻<\del>诚心的伸手求代码)
      

  2.   

    是因为那个网站是UTF8编码的原因吗?
    该如何使得VC可以正确读出数据呢?
    修改VC的设置还是在代码中填一些什么?
    如果要填 该填一些什么呢?
    (好吧 我<del>无耻</del>诚心的伸手求代码)
      

  3.   

    vc默认的是GB2312编码,而那网站可能是其他编码的,这有可能导致了乱码。
      

  4.   


    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;
    }
    偷懒,直接复制粘贴代码给你吧。
      

  5.   

    在HTTP返回头里面有数据的编码类型,根据编码类型转成想要的就成了。
      

  6.   

    4L 的大大 复制的是 UTF8 转换成GB2312嘛? 函数接口有点看不懂啊
    5L 可以说的详细点吗?
      

  7.   


    1:现在的程序本身不是_UNICODE就是_MSBC,汉字也是字符,只不过和拉丁字母长的不一样,本质上对计算机来说没区别。因此在WINDOWS系统中API有两种,分别对应着两种字符集。命名大都是xxxxxxxxA,xxxxxxxxW,之所以在平时写程序时很少看到这样的名字,那是因为有MS在提供系统API时把这类的函数都加了一个预编译条件,如下面代码:
    #ifdef _UINCODE
    #define xxxxxxx xxxxxxxW
    #else //_UINCODE
    #define xxxxxxx xxxxxxxA
    #endif //_UINCODE
    2:知道了上面的问题,因此要确定在程序中使用哪一种函数(两种一起用也可以,但是设计很麻烦,代码少还好说,多了就费劲了,如果不是非常有钱或有时间就不要在这方面耽误功夫了。),假如使用xxxxxxW类型的函数来处理HTTP返回的内容,就要把返回的内容给转成_UNICODE类型,再用相关的函数处理就可以了。3:1、2两个问题确定后,下面再分析HTTP返回内容何时要转,何时不用转。这里就要说到HTTP返回头协议(详细内容看RFC文档),CONTENT_TYPE 字段指示着后面跟随数据是用的哪一种变码。下面示便代码可能有些帮助: if( CHtmlAnalyzer::SearchText(szContentType,_T("charset=utf-8")) )
    m_objHtml.TakeAnapshot(pszContentBuf + 3,nRead -3,CHtmlAnalyzer::CHARSET_UTF8); // skip 0xEF,0xBB,0xBF
    else if( CHtmlAnalyzer::SearchText(szContentType,_T("unicode")) )
    m_objHtml.TakeAnapshot(pszContentBuf + 2,nRead -2,CHtmlAnalyzer::CHARSET_UNICODE);// skip 0xFE,0xFF
    else
    m_objHtml.TakeAnapshot(pszContentBuf,nRead,CHtmlAnalyzer::CHARSET_MULTIBYTE);最后:要注意的有些返回头指示的字符集类型,不一定是后面跟随数据的实际类型,此时的代码就要注意处理了。当然这类情况非常地少,暂时可以不用考虑。------匆匆忙忙写,也许有错误,将就着看吧--------------
      

  8.   

    你http请求web服务器.你是gb2312. 而他却可以是utf-8. 一般http头有服务器encode编码.把他转成你自己本地的就好了