模拟GET发包,得到返回的HTML代码,编码是GB2312,而项目是UNICODE字符集。现在我要截取HTML代码中一个控件的value值。请问一下需要转码不?

解决方案 »

  1.   

    是否转换这要看你的应用了给你一个ANSI到UNICIODE的转换函数,直接调用。
    入口参数:szAnsi GB2312为缓冲区地址,如果入口缓冲数据以0结尾,可不提供长度。 // ANSI To UNCODE转换
    CString AnsiToUnicode(char * szAnsi, int len=0);
    // ANSI To UNCODE转换
    CString CStringProc::AnsiToUnicode(char * szAnsi, int len)
    {
    CString str;
    // ansi to unicode
    //预转换,得到所需空间的大小
    int wcsLen;
    if(len>0)
    wcsLen=len;
    else
    wcsLen= ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0);
    //分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间
    wchar_t* wszString = new wchar_t[wcsLen + 1];
    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);
    //最后加上'\0'
    wszString[wcsLen] = '\0'; // UNICODE字串
    str=wszString;
    delete[] wszString;
    return str;
    }
      

  2.   


    请教一下我这个问题出在哪里? char strBuff[1025] = {0}; 
    CString strHtml(_T(""));
    int len;
    while ((len = pFile->Read((void*)strBuff, 1024)) > 0)
    {
    strHtml += AnsiToUnicode(strBuff);
    memset(strBuff,0,1025);        //缓冲区清0

    }
                                            MessageBox(strHtml);
    MessageBox出来的还是乱码。