一个客户已经有个tomcat网站, 而且里面编码必须用GBK, 不能用UTF-8, http://www.test.com/update/产品/setup.exe我现在用InternetOpenUrl打开, 上面这个链接是错误的, 必须要把汉字转换成2位的数字%显示出来, 才能下载, 但是我从网上http://blog.csdn.net/zym_123456/archive/2008/03/19/2197247.aspx 获取的GBK转换函数为什么我转换后还是变回汉字了?
急~~~ 谢谢各位!

解决方案 »

  1.   

    你去JAVA版问问吧,用JAVA的人好像对tomcat比较熟
      

  2.   

    用AtlEscapeUrl函数,具体更多内容请查询MSDN
      

  3.   

    我用UrlEscape ,但是汉字还是那个汉子:(
    TCHAR szSite[2048];
    DWORD len = 2048;  
    if(SUCCEEDED(UrlEscape(szUrl,szSite,&len,URL_ESCAPE_PERCENT)))   //编码   
    {   
    int i=0;
    } if ( !(hConnect = InternetOpenUrl ( hOpen, szSite, szHead, dwHeadLength, INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0)))
    {
    DWORD dwError= GetLastError();
    return INTERNET_ERROR_OPENURL;
    }
      

  4.   

    void ConvertGBKToUtf8(CString & strGBK) 

    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0); 
    unsigned short * wszUtf8 = new unsigned short[len+1]; 
    memset(wszUtf8, 0, len * 2 + 2); 
    MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len); 
    len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL); 
    char *szUtf8=new char[len + 1]; 
    memset(szUtf8, 0, len + 1); 
    WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL); 
    strGBK = szUtf8; 
    delete[] szUtf8; 
    delete[] wszUtf8; 
    }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, wszGBK, len); 
    len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); 
    char *szGBK=new char[len + 1]; 
    memset(szGBK, 0, len + 1); 
    WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL); 
    strUtf8 = szGBK; 
    delete[] szGBK; 
    delete[] wszGBK; 
    }
      

  5.   

    hendriclee 
     谢谢你, 原因找到了, 那台服务器没有打开GBK编码 -_-!!!