проблемка с wininet

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _nic, 25 Dec 2008.

  1. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Обьясните,в чем прикол с кодировкой при использование wininet
    Такой вот код
    Code:
    char *data=new char[1024*1024]; DWORD rb;
    char agent[1024]="User-Agent: Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1";
    HINTERNET II=InternetOpen(agent,INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY,0,0,0);
    HINTERNET CC=InternetConnect(II,"site.com",INTERNET_DEFAULT_HTTP_PORT,0,0,INTERNET_SERVICE_HTTP,0,0);
    HINTERNET RR=HttpOpenRequest(CC,"GET","index.php", NULL,0,0,INTERNET_FLAG_KEEP_CONNECTION,1);
    HttpSendRequest(RR,0,0,0,0);
    InternetReadFile(RR,data,1024*1024,&rb);
    InternetCloseHandle(II);
    InternetCloseHandle(CC);
    InternetCloseHandle(RR);
    Memo1->Text=AnsiString(data);
    HANDLE h=CreateFile("\\\\.\\C:\\1.html",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_FLAG_RANDOM_ACCESS,NULL);
    WriteFile(h,data,strlen(data),&rb,0);
    CloseHandle(h);
    
    В мемо тект выглядит нормально.А если открыть файл в опере то там крякозяблы из за левой(хз какой)кодировки.Как задать нужную кодировку?
     
  2. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    браузер сам должен выбрать нужную кодировку, исходя из содержимого файла. если не выбирает, значит, думаю содержимое кривое в файле
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вообще кодировка может быть любой, начиная от win-1251 и заканчивая юникодом. Это зависит с какого сайта тянеш данные. По этому в файле у тебя всё будет в той кодировке которую пришлет сайт. Вообще в начале страницы должен распологаться тип кодировки типа (<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" >), и если его нет, то могут возникнуть глюки вот такие вот. Особенно в рускоязычных прогах, где подефолту стоит кодировка win-1251. Так что в wininetом всё впорядке )
     
  4. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Так вроде на самом деле не рекомендуется делать, ибо, к примеру, некоторые проксики перекодирую страницу, и тогда что-то нехорошее может произойти
     
  5. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    а с сайта идет случайно не с gzip-ованный??? 8)))
    а то ведб можно и на зипованный код тупо пялиться! 8)))

    ... нада тестировать... с вининетом (сможет он gzip на лету обработать) :cool:
     
    #5 Delimiter, 26 Dec 2008
    Last edited: 26 Dec 2008