Autor | Zpráva | ||
---|---|---|---|
P3tr Profil |
#1 · Zasláno: 14. 12. 2005, 13:58:27
Ahoj,
potreboval bych poradit s nasledujicim problemem. Stahuji html stranku z http serveru s pouzitim php socketu nebo funkci curl modulu, oboji mi vraci stejny vysledek a to: v kodu html stranky jsou html entity nahrazeny jednobajtovymi znaky, jedna se o &scaron zamenen za 'a' a &Scaron zamenen za '`'. Typ stranky je text/html. Kodovani je utf-8. V originale jsou ve strance misto znaku š a Š html entity, u ostatnich znaku vcetne znaku s diakritikou nebyly html entity pouzity. Mam dojem ze se php interne pokousi ve stringu prevest html entitu na dvoubajtovy utf znak a nekde dropne prvni bajt a tim se vysledny znak neinterpretuje spravne. Nemam zapnuto zadne filtrovani vstupu, vystupu (mbstring). Pro priblizeni znazornim priklad: Z http serveru stahuji potrebnou html stranku 'test.html', ktera obsahuje mimo jine nasleduji kod : ... <input maxlength="30" name="Ulice:" value="Švandova"> <input maxlength="30" name="Keř:" value="šeřík"> ... Pro ziskani html stranky jsem pouzil nasleduji kod: $fp = fsockopen($host,$port, $errno,$errstr, 30); //otevreni spojeni s http serverem if (!$fp) { echo "error: $errno, $errstr\n"; exit; } fwrite($fp,$request,strlen($request)); //zaslani http requestu while (!feof($fp)) { $data .= fgets($fp, 128); } //nacteni contentu do bufferu $data fclose($fp); Nyni, kdyz si vypisu promennou $data (zkousel jsem i primo zapsat do souboru), obsahuje oproti originalu nasledujici: ... <input maxlength="30" name="Ulice:" value="`vandova"> <input maxlength="30" name="Keř:" value="aeřík"> ... Zkousel jsem ruzne verze php: 5.04, 5.05, 5.1.1, dokonce i php 6.0-dev na systemech Linux, Windows, zmeny nastaveni locales, i nastaveni interniho kodovani v php.ini (netusim jestli to ma vubec vliv), bohužel beze změn. Pokud nekdo tusite, v cem muze byt problem nebo znate reseni, dost by mi to pomohlo. Diky. Petr |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0