0
InternetReadFileを使用してダウンロードしたutf-8でエンコードされたWebページのソースコードを、Windowsが認識できるutf-16に変換します。 WebページがUTF-8でエンコードされながらSetWindowText InternetReadFile()から認識できないコードを表示する
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);
hwndShowEdtのエディットボックスを常に認識できないコードを示しています。ここ
は、コードスニペットです。誰も私のコードの間違いを見つけることができますか?
はsizeof(wszBuffer)が間違っています。ループは意味をなさない、最後のチャンクだけを格納する。 * len *を使用しているあなたの兆候はありません。 –
@ hans-passant 'len'は未使用ですが、どのようにコードを修正して動作させるのですか? – tunpishuang