【发布时间】:2011-06-22 08:20:31
【问题描述】:
我想将使用 InternetReadFile 下载的 utf-8 编码网页源代码转换为 windows 可以识别的 utf-16。
这里是sn-p的代码:
HINTERNET hConnect,hSession;
char *szBuffer = malloc(WEBSOURCE_SIZE);
wchar_t *wszBuffer = (wchar_t *)malloc(WEBSOURCE_SIZE);
TCHAR szStr[100];
DWORD dwSize=0;
DWORD dwDownloaded;
if(szBuffer == NULL)
{
MessageBox(hwndGetBtn,TEXT("error"),TEXT("Error"),MB_ICONHAND);
}
GetWindowText(hwndUrlEdt,szStr,sizeof(szStr)/sizeof(TCHAR));
hSession = InternetOpen(TEXT("testWinINet"), PRE_CONFIG_INTERNET_ACCESS, NULL, INTERNET_INVALID_PORT_NUMBER, 0);
hConnect = InternetOpenUrl(hSession,szStr,NULL,0,INTERNET_FLAG_DONT_CACHE,0);
ZeroMemory(szBuffer,WEBSOURCE_SIZE);
while (InternetReadFile(hConnect,szBuffer,WEBSOURCE_SIZE,&dwDownloaded))
{
if (0==dwDownloaded) break;
szBuffer[dwDownloaded]=0;
}
len=MultiByteToWideChar(CP_UTF8,0,szBuffer,-1,NULL,0);
MultiByteToWideChar(CP_UTF8,0,szBuffer,-1,wszBuffer,sizeof(wszBuffer));
SetWindowText(hwndShowEdt,wszBuffer);
当网页是 utf-8 编码时,hwndShowEdt 编辑框总是显示无法识别的代码。
那么任何人都可以找到我的代码的错误吗?
【问题讨论】:
-
sizeof(wszBuffer) 是错误的。循环没有意义,您只存储最后一个块。没有你使用 len 的迹象。
-
@hans-passant
len未使用,如何修改代码并使其工作?