一个客户已经有个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转换函数为什么我转换后还是变回汉字了?
急~~~ 谢谢各位!
急~~~ 谢谢各位!
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;
}
{
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;
}
谢谢你, 原因找到了, 那台服务器没有打开GBK编码 -_-!!!