Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 3.881 pregleda

Najnovija ↓

Preuzimanje sa drugog sajta, Charset problem. 27.11.2011. u 01:25 · pre 181 mesec #1
Pozdrav, preuzimam informacije o vremenu sa jednog sajta, DOM+XPath. To je OK, medjutim, na mom sajtu se ne prikazuju naša slova: č,ć,š,č,ž,đ. U čemu li je problem? Na bilo kom delu strane, osim u delu gde se prikazuju podaci o vremenu, prikaz slova funkcioniše-
Potpis
Ivan Djordjevic
Re: Preuzimanje sa drugog sajta, Charset problem. 27.11.2011. u 01:45 · pre 181 mesec #2
Jesu slova sastavni deo toga što parsiraš? Na koji način vraćaš output parsiranog dela i ostatka sajta? Kroz jedan response ili vučeš AJAX-om?

U suštini svodi se na UTF-8 samo je pitanje zašto ga tu nema.
Potpis
Bad programmers worry about the code. Good programmers worry about data
structures and their relationships.
Re: Preuzimanje sa drugog sajta, Charset problem. 27.11.2011. u 09:14 · pre 181 mesec #3
Ako tvoj i drugi sajt nisu u istom kodnom skupu, moraš da rekodiraš tekst u letu. Otvori tu drugu stranu i pogledaj koji je kodni skup, a onda iskoristi iconv() za rekodiranje. Pretpostavljajući da je tvoj sajt u UTF-8, a taj drugi u CP1250:
Code (php):
$string = iconv('CP1250', 'UTF-8//IGNORE', $string);
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Preuzimanje sa drugog sajta, Charset problem. 27.11.2011. u 10:24 · pre 181 mesec
izmenjeno 1 put, poslednji put djordjevic_i 27.11.2011. u 10:35
  1. djordjevic_i27.11.2011. u 10:35zapis iz teksta poruke
#4
Code:

echo "<table class=weather_table ><tr>";
$dom = new DOMDocument();
@$dom->loadHTMLFile('http://www.aladin.info/vremens...RXX0032-%C4%8Ca%C4%8Dak-Srbija');
$xpath = new DOMXPath($dom);
$informacija= $xpath->query("//div[@class='span8 last']//li");
foreach($informacija as $info)
  echo '<td>'.$info->textContent.'</td></tr>';
  echo "</table>";

Ovaj deo koji mi odrađuje celokupan posao, da ne tupim. Kodni raspored je isti na oba sajta, utf-8. Na jednom računaru mi se vidi dobro, a na drugom ne, a u pitanju su 2 verzije Wamp servera, odnosno PHP 5.4 i PHP 5.3.5. Na računaru gde je verzija 5.3.5 se vidi ok, a na drugom ne :(
Potpis
Ivan Djordjevic
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 18:30 · pre 181 mesec #6
Prvo, nisi nam rekao da li si poslusao Gorana i isprobao njegovu ideju?

Drugo, sumnjas na to da je problem razlika u PHP verzijama. Ono sto svima uvek pricam je da idu logickim putem i tako resavaju probleme. Ok, PHP verzija 5.4 ne radi nesto sto radi PHP 5.3.5 verzija. Pogledajmo changelog PHP 5.4 verzije. Ono sto sam ja nasao je ovo:

Code:
Changed default value of "default_charset" php.ini option from ISO-8859-1 to
· UTF-8.


I jos dosta izmena sto se charseta tice. Pogledaj svoj php.ini i pogledaj da tamo nema nekih gresaka. Isto tako baci pogled i na changelog.
Potpis
THE ONLY EASY DAY WAS YESTERDAY
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 18:50 · pre 181 mesec #7
Da li u tom HTML-u kojeg fetch-uješ sigurno postoji head sekcija i onaj tag za definisanje charset-a u njoj?

Ako uopšte nema head sekcije, dodaj je:
Code:
$content = str_ireplace('<html>', '<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>', $content );

A ako je ima, onda samo dodaj taj meta-tag:
Code:
$content = str_ireplace('</head>', '<meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>', $content );

To naravno uradi pre nego što kreiraš DOMDocument instancu. Dakle prvo fetch-uj sadržaj te stranice, pa ga onda import-uj sa loadHTML().
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 20:24 · pre 181 mesec #8
Ej, pa napisah da je kodni skup isti na oba sajta.
Nikola, postoji head sekcija sa tagom za definisanje charset-a, pokusao sam to sto si mi rekao, ali ne vredi, opet dobijam isti rezultat.
Potpis
Ivan Djordjevic
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 21:55 · pre 181 mesec #9
A šta dobijaš u $dom->encoding nakon što učitaš taj HTML?

Meni je inače uvek za potrebe raznih web scraping-a koje sam radio prolazilo to postavljanje encoding-a preko meta tag-a. Probaj možda da u head sekciji ostaviš samo taj meta tag za charset, tako što ćeš npr. nekim regexp-om replace-ovati <head>.*</head>, sa <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>, pa onda takav string učitati u DOMDocument.

A ako ni to ne upali, probaj onda da ga zezneš sa ovim hack-om:
Code:
$doc = new DOMDocument();
$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
$doc->removeChild($doc->firstChild); //uklanjanje XML_PI_NODE elementa
$doc->encoding = 'UTF-8';
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 22:37 · pre 181 mesec #11
Čudno al opet ... nije encoding nešto što se ponaša kako mu dune. Aj da probamo onda drugi pristup - koje su ti razlike između ta dva kompa? U smislu browser-a i OS-a? (mada je bitniji browser al otkud znam - da probamo).
Potpis
Bad programmers worry about the code. Good programmers worry about data
structures and their relationships.
Re: Preuzimanje sa drugog sajta, Charset problem. 28.11.2011. u 23:32 · pre 181 mesec #12
Na identičnim browserima na oba računara, prikazuje se različito, odnosno ie, ff, chrome na jednom ne prepoznaju karaktere, a na drugom da. u lokalu, gde je verzija php-a 5.3.5 se vidi dobro, na istom računaru, prikaz sa weba ne prikazuje dobro. nikako mi ne ide u glavu, medjutim, ako preuzmem podatke sa neke druge lokacije, gde je isto postavljen kodni skup, prikazuje normalno slova.
samo on pravi problemaladin
Potpis
Ivan Djordjevic
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme