2011-02-06 7 views
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のエディットボックスを常に認識できないコードを示しています。ここ

は、コードスニペットです。

誰も私のコードの間違いを見つけることができますか?

+1

はsizeof(wszBuffer)が間違っています。ループは意味をなさない、最後のチャンクだけを格納する。 * len *を使用しているあなたの兆候はありません。 –

+0

@ hans-passant 'len'は未使用ですが、どのようにコードを修正して動作させるのですか? – tunpishuang

答えて

0

Webページの文字セットは、HTMLだけでメタタグを認識することができます。

<meta http-equiv="Content-Type" content="text/html;charset=gb2312"> 
関連する問題